MENU

Java中String Pool的理解

前言

最近由于公司内部用的多数是Java,所以进来再啃一些Java相关的知识啦。

总结

String Pool即是字符串常量池,保存着所有字符串字面量,字面量在编译期已确定。当然还可以使用String的intern()方法在运行过程中将字符串添加到String Pool中。
何为字符串字面量?

# 通过下面方式创建的字符串即为字面量
String str = "aaa";

下面是一些比较判断,容易混淆,再这记录一下。

# s1 和 s2 采用 new String()的方式新建了两个不同字符串。
String s1 = new String("aaa");
String s2 = new String("aaa");
System.out.println(s1 == s2);           // false

# s3 和 s4 是通过 s1.intern() 方法取得一个字符串引用。
String s3 = s1.intern();
String s4 = s1.intern();
System.out.println(s3 == s4);   // true

# s5 和 s6 通过字面量方式创建,因此两者比较是相等的。
String s5 = "bbb";
String s6 = "bbb";
System.out.println(s5 == s6);  // true

# 一个是字面量,一个通过new创建,不相等。
String s7 = "aaa";
System.out.println(s1 == s7);  // false

# s1通过intern放入字符串常量池,因此两者相等。
String s8 = "aaa";
System.out.println(s1.intern() == s8);  // true
标签: Java
返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码