java中final關鍵字
阿新 • • 發佈:2018-03-10
成員變量 子類 void color 需要 sta new 根據 基本用法 。如果final修飾一個引用類型時,值指的是地址的值,內容是可變的。
,則編譯器會把它當做編譯期常量使用。
在Java中,final關鍵字可以用來修飾類、方法和變量(包括成員變量和局部變量)。下面就從這三個方面來了解一下final關鍵字的基本用法。
1.修飾類
當用final修飾一個類時,表明這個類不能被繼承。final類中的成員變量可以根據需要設為final,final類中的所有成員方法都會被隱式地指定為final方法。
2.修飾方法
final修飾的方法,方法不能被重寫(可以重載多個final修飾的方法)。當父類中final修飾的方法同時訪問控制權限為private,子類中不能直接繼承到此方法,此時子類中定義相同的方法名和參數,為子類中重新定義了新的方法。
3.修飾變量
1) final修飾變量表示常量,只能被賦值一次,賦值後值不再改變
public class Test06 { public static void main(String[] args){ Test06 test = new Test06(); final StringBuilder str = new StringBuilder("hello"); str.append("World"); System.out.println(str); } }
輸出結果為helloWorld。
2)當final變量是基本數據類型以及String類型時,如果在編譯期間能知道它的確切值
編譯期間能知道它的確切值:
public class Test06 { public static void main(String[] args) { String a = "helloworld"; final String b = "hello"; String d = "hello"; String c = b + "world"; String e = d + "world"; System.out.println((a== c)); System.out.println((a == e)); } }
輸出結果為true,false;編譯器將其當成常量,a,c都指常量池中的"helloworld"。
編譯期間不知道它的確切值:
public class Test06 { public static void main(String[] args) { String a = "helloworld"; final String b = getWord(); String d = "hello"; String c = b + "world"; String e = d + "world"; System.out.println((a == c)); System.out.println((a == e)); } public static String getWord() { return "hello"; } }
輸出結果為false,false。
java中final關鍵字