java-static和final关键字
static
Java类中可以包含成员变量、成员方法、构造方法、初始化块、内部类,static可以修饰其中的成员变量、成员方法、初始化块、内部类。被static修饰的成员是类的成员,该成员属于类,不属于单个对象。需要注意的是,类成员不能访问实例成员,因为可能出现类成员已经初始化完成,但实例成员还未初始化的情况。
- 类变量:以static修饰的成员变量叫类变量(静态变量),类变量属于类,它随类的信息存储在方法区中,而不是随着对象存储在堆中。类变量可以通过类名来访问,也可以通过对象名来访问,建议通过类名来访问。
- 类方法:以static修饰的方法叫类方法(静态方法),类方法属于类,可以通过类名访问,也可以通过对象名访问,建议通过类名来访问。
- 静态块:以static修饰的初始化块叫静态初始化块,静态块属于类,它在类加载的时候被隐式调用一次,之后便再也不会被调用了。
- 静态内部类:被static修饰的成员内部类叫静态内部类,静态内部类可以包含静态成员,也可以包含非静态成员。静态内部类不能访问外部类的实例成员,只能访问它的静态成员。外部类的所有方法、初始化块都能访问其内部定义的静态内部类。
final
final关键字可以用于修饰类、方法、变量。被final修饰的类不可以被继承,被final修饰的方法不可以被重写,被final修饰的变量,一旦获得了初始值,就不可以被修改。
对于基本类型的变量,若final修饰的是静态变量,则可以在声明变量时指定初始值,也可以在静态初始化块中指定初始值。若final修饰的是实例变量,可以在声明变量时指定初始值,也可以在普通初始化块或构造方法中指定初始值。若final修饰的是局部变量,可以在声明变量时指定初始值,也可以在后面的代码中指定初始值。
对于引用类型的变量,由于保存的仅仅是一个引用(地址),所以final只能保证这个引用类型变量所引用的地址不会改变,但这个对象的内容是可以发生改变的。
#学习路径##Java#