关键字定义
定义:一些在JAVA中赋予了其指定含义的词语(一般在java程序中有明显区别,共54个)。
与类相关:public(公共类)、private(非公有类)、protected、 class(一般类)、 interface(定义接口)、 implements(实现继承)、 extends(继承类)、 import 、package(包)、abstract(定义抽象类)。
与方法函数/属性相关:void、return(结束整个方法,与下面break和contiue区分开)、static(静态)、final。
八大基本数据类型:int(整形)、short(整形)、byte()、long()、
char()、boolean()、double()、float()。
循环判断:for Switch() do while break(跳出当前循环) continue(中断此次循环,进入下一循环 ) if() case( )
swith(){//int/short(一般是直接转化为int,因为short的精度比int小。无法将long写入也是因为long比int精度高,除非强转)/ String(JDK1.7版本以前不能用) 枚举类型
case **:break;
}
异常:try catch throw throws finally(现阶段无需了解)
其他:this super
goto(保留字,作用是先写在程序里,以为了以后用时做准备。本身无任何含义)
2.关键字命名
1.访问权限修饰符(修改类、方法、属性):
public:整个工程随意访问,不管是跨类还是跨包
protected:同一个包下的类可以随意访问,跨包不行(跨包继承是可以继承到受保护的属性或者方法)
默认不写(独立的访问权限):同一个包下的类可以随意访问,跨包不行
private:仅限于当前类自己可以访问,其他类拥有对象也无法访问私有属性/方法
(由上到下,权限由大到小)
如:用public类:
public class Student {
public String name;
public String age;
public String sex;
public String address;
}
此时程序运行正常
若依次进行修改:
public String name;
protected int age;
String sex;
private String address;
那么
private String address;运行错误
这是因为用别的方法无法调用本对象,但改为自己使用的则不同。
public void study(){
this.name="";
this.address="";
this.age=20;
this.sex="";
}
修饰的范围:方法(普通与构造)、属性、类
类只能用public和默认不写来修饰
2.this\super
this:当前类的对象
super:父类的对象
如下面程序:
public class Student {
public Student(){
System.out.println("执行了第一个");
}
public Student(String n){
System.out.println("执行了第二个");
}
而调用程序只会运行调用第一个
public class Test {
public static void main(String[] args){
Student stu=new Student();只会运行调用第一个程序。
如果想要调用两种方法,使用this,则程序为:
public class Student {
public Student(){
this("");//调用无参方法
System.out.println("执行了第一个");
}
public Student(String n){
System.out.println("执行了第二个");
}
由于this调用的是System.out.println("执行了第二个");
所以程序运行是: 执行了第二个
执行了第一个
当需要注意的是:this只能放在第一行,这是语法规则。
普通方法和属性调用:this.方法名(),this.属性名
this();
super.方法名(),super.属性
super();
如创造一个大学生类:
public class UnStudent extends Student {
public UnStudent(String n){
}
}
此时报错,加入super()来调用父类的构造方法
public class UnStudent extends Student {
public UnStudent(String n){
//调用父类的构造方法
super(n);
}
}
注意:1.this()和super()必须出现在第一行
2.方法重写,如果要对父类的方法进行补充,则需要调用super.父类方法名()方法定义
3.final(最终的,最后的)
可以用来修饰:类 public final class Student(此类被修饰为最终,无法再有子类,当前类不能被继承)
方法:public final void study(){} ,此方法不能被覆盖,即当前方法不能被重写
属性:代表当前属性只能被赋值一次(常量)如:
public final String name;如果还有构造方法存在时,如:
Public Student(Steing n){
Super();
}
此时会报错,因为属性没赋唯一的一次值,而构造方法的特性是属性重置。
改为public final String name=””;
或者构造赋值name=n;
代表当前属性只能被赋值一次(常量),也就是在生命周期只赋值一次(从类对象创建开始到销毁)
参数/局部变量:代表当前参数在生命周期范围内(从方法执行开始到方法结束)不能重新赋值
Public Student (final String n) {
Super
}
4.static(静态的)
可以用来修饰:方法、属性、静态块
public class Student {
public String name;
public static String address;
public void study(){}
public static void play(){}
}
测试:
public class Test {
public static void main(String[] args){
Student stu1=new Student();
Student stu2=new Student();
stu1.address="衡阳";
stu2.address="长沙";
Student.address="广州";
System.out.println(stu1.address);
System.out.println(stu2.address);
System.out.println(Student.address);
}
}
运行结果为:广州
广州
广州
注意一点:静态方法中一定不能直接使用非静态属性或者方法
public class Student {
public String name;
public static String address;
static{
System.out.println("执行了静态块");
}
{
System.out.println("执行了代码块");
}
public void study(){
System.out.println("======");
}
public static void play(){}
}
在System.out.println("执行了静态块");后加this name();将报错。这是加载问题。
定义:一些在JAVA中赋予了其指定含义的词语(一般在java程序中有明显区别,共54个)。
与类相关:public(公共类)、private(非公有类)、protected、 class(一般类)、 interface(定义接口)、 implements(实现继承)、 extends(继承类)、 import 、package(包)、abstract(定义抽象类)。
与方法函数/属性相关:void、return(结束整个方法,与下面break和contiue区分开)、static(静态)、final。
八大基本数据类型:int(整形)、short(整形)、byte()、long()、
char()、boolean()、double()、float()。
循环判断:for Switch() do while break(跳出当前循环) continue(中断此次循环,进入下一循环 ) if() case( )
swith(){//int/short(一般是直接转化为int,因为short的精度比int小。无法将long写入也是因为long比int精度高,除非强转)/ String(JDK1.7版本以前不能用) 枚举类型
case **:break;
}
异常:try catch throw throws finally(现阶段无需了解)
其他:this super
goto(保留字,作用是先写在程序里,以为了以后用时做准备。本身无任何含义)
2.关键字命名
1.访问权限修饰符(修改类、方法、属性):
public:整个工程随意访问,不管是跨类还是跨包
protected:同一个包下的类可以随意访问,跨包不行(跨包继承是可以继承到受保护的属性或者方法)
默认不写(独立的访问权限):同一个包下的类可以随意访问,跨包不行
private:仅限于当前类自己可以访问,其他类拥有对象也无法访问私有属性/方法
(由上到下,权限由大到小)
如:用public类:
public class Student {
public String name;
public String age;
public String sex;
public String address;
}
此时程序运行正常
若依次进行修改:
public String name;
protected int age;
String sex;
private String address;
那么
private String address;运行错误
这是因为用别的方法无法调用本对象,但改为自己使用的则不同。
public void study(){
this.name="";
this.address="";
this.age=20;
this.sex="";
}
修饰的范围:方法(普通与构造)、属性、类
类只能用public和默认不写来修饰
2.this\super
this:当前类的对象
super:父类的对象
如下面程序:
public class Student {
public Student(){
System.out.println("执行了第一个");
}
public Student(String n){
System.out.println("执行了第二个");
}
而调用程序只会运行调用第一个
public class Test {
public static void main(String[] args){
Student stu=new Student();只会运行调用第一个程序。
如果想要调用两种方法,使用this,则程序为:
public class Student {
public Student(){
this("");//调用无参方法
System.out.println("执行了第一个");
}
public Student(String n){
System.out.println("执行了第二个");
}
由于this调用的是System.out.println("执行了第二个");
所以程序运行是: 执行了第二个
执行了第一个
当需要注意的是:this只能放在第一行,这是语法规则。
普通方法和属性调用:this.方法名(),this.属性名
this();
super.方法名(),super.属性
super();
如创造一个大学生类:
public class UnStudent extends Student {
public UnStudent(String n){
}
}
此时报错,加入super()来调用父类的构造方法
public class UnStudent extends Student {
public UnStudent(String n){
//调用父类的构造方法
super(n);
}
}
注意:1.this()和super()必须出现在第一行
2.方法重写,如果要对父类的方法进行补充,则需要调用super.父类方法名()方法定义
3.final(最终的,最后的)
可以用来修饰:类 public final class Student(此类被修饰为最终,无法再有子类,当前类不能被继承)
方法:public final void study(){} ,此方法不能被覆盖,即当前方法不能被重写
属性:代表当前属性只能被赋值一次(常量)如:
public final String name;如果还有构造方法存在时,如:
Public Student(Steing n){
Super();
}
此时会报错,因为属性没赋唯一的一次值,而构造方法的特性是属性重置。
改为public final String name=””;
或者构造赋值name=n;
代表当前属性只能被赋值一次(常量),也就是在生命周期只赋值一次(从类对象创建开始到销毁)
参数/局部变量:代表当前参数在生命周期范围内(从方法执行开始到方法结束)不能重新赋值
Public Student (final String n) {
Super
}
4.static(静态的)
可以用来修饰:方法、属性、静态块
public class Student {
public String name;
public static String address;
public void study(){}
public static void play(){}
}
测试:
public class Test {
public static void main(String[] args){
Student stu1=new Student();
Student stu2=new Student();
stu1.address="衡阳";
stu2.address="长沙";
Student.address="广州";
System.out.println(stu1.address);
System.out.println(stu2.address);
System.out.println(Student.address);
}
}
运行结果为:广州
广州
广州
注意一点:静态方法中一定不能直接使用非静态属性或者方法
public class Student {
public String name;
public static String address;
static{
System.out.println("执行了静态块");
}
{
System.out.println("执行了代码块");
}
public void study(){
System.out.println("======");
}
public static void play(){}
}
在System.out.println("执行了静态块");后加this name();将报错。这是加载问题。