java中字符串字面量池

时间:2022-11-14 14:43:02
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为减少字符串对象的重复创建,其维护了一个特殊的内存,这些内存被称为字符串常量池。

原理:当以字面量形式创建字符串时,首先会在字符串常量池中查找该字符串,若存在,则直接返回引用;若不存在,创建后,返回引用。