【Java基础】Java 字符串常量池
本周对Java字符串的理解更深了一步。
1. Java中的字符串是不可变类型,即在进行字符串加减操作时,每次都会重新返回一个新的对象,原来的对象仍然存储在字符串常量池中。
2. 那么,什么是字符串常量池呢?字符串都存储在字符串常量池中,如果新建的一个字符串在常量池中已经存在,则直接返回其引用,有如下操作:
public static void main(String[] args) {
String a = "abc";
String b = "abc";
System.out.println(a == b);
}
在新建字符串 b 时,由于字符串常量池中已经存在"abc",所以直接返回其索引,在输出System.out.println(a == b)时,输出的是true.使用字符串常量池,可以节省空间,获取效率也比较高。
3. 而new String()是另一种创建字符串的方式。
如果常量池中不存在该字符串,则会先在常量池中创建该字符串。然后在堆内存中创建字符串对象,随后返回该字符串的引用,有如下操作:
public static void main(String[] args) {
String a = "aa";
String b = new String("aa");
System.out.println(a == b);
}
该方法输出false,因为new String()返回的是堆内存的地址,而字面创建字符串返回的是字符串常量池的地址。

浙公网安备 33010602011771号