final关键字主要用在三个地方:变量、方法、类。
首先,变量分为成员变量和局部变量
2.1 final修饰成员变量 成员变量必须在定义时或者构造器中进行初始化赋值
public class FinalAndVariable {
public int t; //编译成功
public final int b; //编译失败
public final int c = 1; //编译成功
}
在构造方法中将成员变量进行初始化,定义成员变量的时候就可以不用初始化
public class FinalAndVariable {
public int t;
public final int b; //编译成功
public final int c = 1; //编译成功
public FinalAndVariable() { //构造方法
b=2; //在构造方法中将成员变量b进行初始化
}
}
2 .2final修饰局部变量 只需要保证在使用之前被初始化赋值即可
当final变量修饰基本数据类型以及String类型时,编译期间能知道它的确切值时,编译器会把它当做编译期常量使用。
被final修饰的引用变量一旦初始化赋值之后指向的对象不可变但该对象的内容可变。
static的使用始终离不开final字眼,二者可谓藕断丝连,常常繁见
static修饰的在类加载的时候就加载完成了(初始化),而且只会加载一次也就是说初始化一次,所以不会发生变化! final修饰基本数据类型的变量时,则其数值一旦在初始化之后便不能更改。