天天看點

java中字元串字面量池

public class Test {  
    public static void main(String[] args) {  
        String a = "abc";  
        String b = "abc";  
        String c = new String("abc");  
        String d = "ab" + "c";  
        System.out.println(a == b); //true
        System.out.println(a == c); //false   
        System.out.println(a == d); //true
        System.out.println(b == c); //false   
        System.out.println(b == d); //true
        System.out.println(c == d); //false   
    }  
} 
           

1.“==”比較位址,equals比較值。

2.string建立包括兩種形式,“abc”為字面量形式,存在于字元串常量池中,new String("abc")為new形式,在堆記憶體建立新位址。

3.字元串常量池:JVM為減少字元串對象的重複建立,其維護了一個特殊的記憶體,這些記憶體被稱為字元串常量池。

原理:當以字面量形式建立字元串時,首先會在字元串常量池中查找該字元串,若存在,則直接傳回引用;若不存在,建立後,傳回引用。