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直接賦值