62,614
社区成员
发帖
与我相关
我的任务
分享
String a = new String(new char[] { 'a', 'b', 'c', 'd' });
String b = a.intern();
if (b == a) {
System.out.println("b被加入了字符串池中,没有新建对象"); // a == b
} else {
System.out.println("b没被加入字符串池中,新建了对象");
}
char c[] = {'a','b','c'};
String a = new String("abc");
String b = a.intern();
if (b == a) {
System.out.println("b被加入了字符串池中,没有新建对象");
} else {
System.out.println("b没被加入字符串池中,新建了对象"); // a != b
}
String s = new String("1");
s.intern();
String s2 = "1";
System.out.println(s == s2);
String s3 = new String("1") + new String("1");
s3.intern();
String s4 = "11";
System.out.println(s3 == s4);
String s5 = new String(new char[]{'a' , 'b'});
s5.intern();
String s6 = "ab";
System.out.println(s5 ==s6);
//jdk7 false true true
//jdk6 false false false
http://tech.meituan.com/in_depth_understanding_string_intern.html