以下代码说明了final变量和static final变量之区别
public class Aaa{
public static void main(String[] args){
Bbb o1 = new Bbb(31);
Bbb o2 = new Bbb(32);
System.out.println(o1.c+" "+o1.A2+" "+Bbb.A2);
System.out.println(o2.c+" "+o2.A2+" "+Bbb.A2);
}
}
class Bbb{
public static final int A2;
static {
A2=1;
}
public static final int B=2;
public final int c;
public final int d=4;
public Bbb(int p){
this.c=p;
}
}
结论
- static final变量在静态存储空间,被所有线程共享。
- static final变量可以在定义时初始化。
- static final变量可以在静态代码块中初始化。
- final成员变量存储在对象中,不同对象有不同的值。
- final变量可以在定义时初始化。
- final变量可以在构造函数中初始化。