JAVA基础--final、static区别以及类加载顺序
一、JAVA中final 与static 总结 |
||
|
||
|
final |
static |
修饰类 |
该类不可被继承 |
只能修饰内部类,该类不需要new,是静态加载(嵌套顶层类) |
修饰接口 |
× |
× |
修饰构造函数 |
× |
× |
修饰语句块 |
× |
虚拟机按声明顺序初始化static成员字段和static语句块 |
修饰字段属性 |
表示属性初始化后不能修改(实例常量) |
是类变量,所有实例共享该变量值(类变量) |
在定义时或构造函数中赋值(每个实例拥有一份拷贝) |
||
修饰方法 |
该方法不能被覆盖(只可继承) |
是类方法,所有实例共享该方法(类方法) |
修饰函数参数 |
参数值不能被函数修改 |
× |
修饰函数局部变量 |
局部变量初始化后不能修改(局部常量) |
× |
|
|
|
用途 |
1).为了防止方法被覆盖或改写; |
1).定义全局变量或常量; |
2).提高运行效率,JAVA对final方法调用采用内嵌机制; |
2).定义类方法; |
|
|
|
|
二、JAVA类加载顺序 |
||
JAVA类加载顺序: |
1).按代码顺序递归加载静态成员/代码块,先父类再本类; |
|
|
2).按代码顺序递归加载非静态成员/代码块,先父类再本类; |
|
|
3).按代码顺序递归调用构造函数,先父类再本类; |
|
|
|
|
JAVA类加时机: |
1).调用静态成员时,加载静态成员所在的类及父类; |
|
|
2).第一次new对象时加载(第二次new不再加载) |
|
|
3).加载子类会先加载父类.有static和final修饰的成员不会被加载;当成常量使用; |
本文出自 “坐看云起时” 博客
补充:软件开发 , Java ,