1. 程式人生 > >java中final關鍵字

java中final關鍵字

成員變量 子類 void color 需要 sta new 根據 基本用法

在Java中,final關鍵字可以用來修飾類、方法和變量(包括成員變量和局部變量)。下面就從這三個方面來了解一下final關鍵字的基本用法。

1.修飾類

  當用final修飾一個類時,表明這個類不能被繼承。final類中的成員變量可以根據需要設為final,final類中的所有成員方法都會被隱式地指定為final方法。

2.修飾方法

final修飾的方法,方法不能被重寫(可以重載多個final修飾的方法)。當父類中final修飾的方法同時訪問控制權限為private,子類中不能直接繼承到此方法,此時子類中定義相同的方法名和參數,為子類中重新定義了新的方法。

3.修飾變量

  1) final修飾變量表示常量,只能被賦值一次,賦值後值不再改變

。如果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關鍵字