String返回引用

String str2 = new String("str")+new String("01");

str2.intern();

String str1 = "str01";

System.out.println(str2==str1);

在JDK 1.7下,当执行str2.intern();时,因为常量池中没有“str01”这个字符串,所以会在常量池中生成一个对堆中的“str01”的引用(注意这里是引用 ,就是这个区别于JDK 1.6的地方。在JDK1.6下是生成原字符串的拷贝),而在进行String str1 = “str01”;字面量赋值的时候,常量池中已经存在一个引用,所以直接返回了该引用,因此str1和str2都指向堆中的同一个字符串,返回true。

 

String str2 = new String("str")+new String("01");

String str1 = "str01";

str2.intern();

System.out.println(str2==str1);

 


版权声明:本文为successCodeMan原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。