/*
一个String对象str调用intern方法,会从常量池中返回一个内容和str相同的String对象,其地址在常量池中;
如果池中不存在和str内容相同的String对象,则会在池中新生成一个内容和str相同的String对象,再返回这个对象,其地址也是在常量池中的。
*/
public native String intern();
public static void main(String[] args) {
String str1 = new String("abc");
String str2 = "abc";
System.out.println(str1 == str2); //str1在堆中,str2在池中,地址肯定不相等
str1.intern();
System.out.println(str1 == str2); //虽然str1调用了intern(),但是返回值丢弃了,str1没变化,所以结果和上面一样
System.out.println(str1.intern() == str2); //左右两边都是池中地址
}
结果:
false
false
true
链接地址: http://blog.csdn.net/m0_37589327/article/details/70196634