其他
干货 | 深入分析 string.intern() 方法
首先我们来看一段代码:
public class InternTest {
public static void main(String[] args) {
String str1 = new String("hello") + new String("world");
str1.intern();
String str2 = "helloworld";
System.out.println(str1 == str2);//true
System.out.println(str1.intern() == str2);//true
}
}
public class InternTest {
public static void main(String[] args) {
String str1 = new String("hello") + new String("world");
String str2 = "helloworld";
str1.intern();
System.out.println(str1 == str2);//false
System.out.println(str1.intern() == str2);//true
}
}
public class InternTest {
public static void main(String[] args) {
String str1 = new String("java");
str1.intern();
String str2 = "java";
System.out.println(str1 == str2);//false
System.out.println(str1.intern() == str2);//true
}
}
这个结果其实很好理解,在第一行代码执行的时候,会在heap中创建一个对象,并且回去常量池中查看该字符串是否已经存在,如果不存在,那么久创建一个。所以第二行代码可以说是没什么作用的。
作者:Mazin
来源:my.oschina.net/u/3441184/blog/887152
点击「阅读原文」和栈长学更多~