final称为常量,static final称为全局常量。code
成员变量是随类初始化或对象初始化而初始化的。当类初始化的时候,会给类变量分配内存;当对象初始化的时候,会给实例变量分配内存。对象
final修饰成员变量能够在申明的时候指定初始值,还能够在构造器或者在普通初始化块中指定初始值。内存
static final修饰的变量能够在申明的时候指定初始值,也能够在静态初始化块中指定初始值。class
由此能够看出final修饰的成员变量的值能够在同一类的不一样对象中改变,而static final修饰的成员变量在同一类不一样对象中不能改变。变量
例子:方法
public class FinalDemo { private static final String A; private static final String A1 = "static final直接赋值"; private final String B; private final String B1 = "final直接赋值"; static { A= "静态初始化块初始化"; } // { // B= "初始化块初始化"; // } public FinalDemo(String b) { B = b; } public static void main(String[] args) { FinalDemo demo1 = new FinalDemo("构造方法初始化demo1"); System.out.println(demo1.B); FinalDemo demo2 = new FinalDemo("构造方法初始化demo2"); System.out.println(demo2.B); System.out.println(FinalDemo.A); System.out.println(FinalDemo.A1); } } 运行结果: 构造方法初始化demo1 构造方法初始化demo2 静态初始化块初始化 static final直接赋值