Java关键字的含义:Java关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数。
在eclipse中,关键字有特定的颜色区分,为红色
关键字的分类:
i. 访问权限:public protected private
ii. 跟类相关:class、interface、extends、implements、import、abstract
iii. 跟方法相关:void、return
iv. 基本数据类型:int、long、short、float、double、char、byte、boolean
v. 跟循环判断相关:if、else、for、while、do、case、default、break、continue
vi. 异常:try、catch、finally、throw、throws
vii. 跟对象相关:new、this、super
viii. 其他:instanceof、static、final
解析关键字
1.访问权限:public protected 默认不写的 private
i. Java当中有四大访问权限:公有(public)、受保护(protected)、默认(不写)、私有(private)(其访问权限为依次减少,直到private只能被自己创建的类进行访问)
ii. 访问权限的应用范围:
a. 当定义类的时候:只能用public或者默认不写的访问权限
并且如果Java文件中的有多个类的时候,只能有一个public,且这个public的class只能和创建此Java文件名一致,或者当多个类都没有public时,默认给与文件名的相同的class定义public。
b. 定义属性的(常量,变量)的时候:
注意:接口中的所有常量必须都是public!!!
c. 定义方法时
注意:1.接口的所有方法必须都是public的
2.构造方法,也可以修改访问权限
3.构造方法私有化:让外部不能够创建当前类的对象
4.方法重写:子类重写父类方法,访问权限只能进行扩大或者不变
访问权限的权限对比图:
访问权限 | 当前类 | 共同包中的不同类 | 不同包的子类继承 | 不同包的类 |
Public | Yes | Yes | Yes | Yes |
protected | Yes | Yes | Yes | no |
默认 | Yes | Yes | no | no |
private | Yes | no | no | no |
2.this/super
i.this指代当前类的对象
a.在普通方法里面进行使用:指代的是调用当前类的相关属性和方法 应用格式:this.方法名();
b.在构造方法里面进行使用:指代调用当前类的其他构造函数 应用格式:this();
注意:this调用构造方法的代码必须是在第一行。
上图中虽然不能创建一个对象进调用三个方法,但是可以进方法的串行运行,如上图的this(“aa”);this(20);!!!但是打印的结果为321。原因为:当创建stu对象的时候,调用然后调用
再调用
然后打印3,返回打印2,再返回打印1。
再如图,如果Student.删除掉,变为this.play();,程序就会进行报错。原因为:this为指代当前对象,在jf对象中没有play()方法,所以程序会进行报错!!!但如果变为Student.this.play()或者play()不会进行报错,第一个是直接指代student的对象调用play方法;第二个是先在jf里面找play方法,找不到,然后再去student找play方法!!!
ii.super:指父类对象
a.在普通方法里面进行使用:指代调用父类的普通方法 应用格式:super.方法名()。
b.在构造方法里面进行使用:指代调用父类的构造方法 应用格式:super()。
注意:方法重写:
a. 完全覆盖父类的方法
b. 对父类的方法进行补充(每一个子类的构造方法一定会去调用父类的构造方法,用来初始化父类的属性)。
c. super();一定是放在第一行
d. 一个构造方法中可以同时调用自己类的构造方法this()和父类构造方法super();,但是super();一定只能是隐形定义(就是不用把super();写出来,以为默认他会自己产生的)
3.fianl
a.可以修饰:类,方法,属性,参数,局部变量
b.修饰类:此类变为不能被继承的类(也就是无后代的类);并且接口和抽象类一定不能用final修饰
c.修饰方法:此方法不能被子类重写了
d.修饰属性:代表当前属性只能被赋值一次,后续不能再进行赋值
e.修饰参数,局部变量:在参数和局部变量的生命周期内不能进行修改
注意:匿名内部类使用外部类的局部变量一定要加final修饰(此修饰的含义为:使此局部变量进行持久化,延长其生命周期)
以上图中如果final删除掉,程序会进行报错,原因出在a的生命周期在运行打印语句之前就已经在内存最后清空了,所以会导致运行出错
4.static
a.可以修饰:属性,方法,静态块
b.概念:所有用static修饰的属性和方法,它依赖于当前类而存在,脱离了对象的束缚
b.静态块:static{}
注意:static的属性,方法,静态块一定只和类加载有关
这两个类执行完后输出结果为1202034
1. 因为静态块在加载类的时候就执行了,所以先打印1
2. 代码块是在创建对象的时候就执行了,所以先打印2,再打印重载方法的0,又因为创建了两个对象 ,所以再打印20
3. 最后执行student.study()打印3,执行stu.paly()打印4
5.return,break,continue
a.return:结束当前方法
b.break:跳出当前层(当前层为最近的层)的循环
c.continue:结束当次循环,继续下一次的循环
6.instanceof:检验当前的对象转型之前的类型是什么 应用格式:对象名 instanceof 类名 (其返回值为boolean类型)