黑马程序员技术交流社区
标题:
关于String intern
[打印本页]
作者:
象牙
时间:
2014-8-19 20:59
标题:
关于String intern
String s1="abc";
String s2=new String("abc");
String s3="abc";
System.out.println(s1.intern()==s2.intern());
System.out.println(s1==s2);
为什么第一个为true 第二个为false
作者:
象牙
时间:
2014-8-19 21:06
搞明白了一个初始为空的字符串池,它由类 String 私有地维护。 当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(用 equals(Object) 方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并返回此 String 对象的引用。 它遵循以下规则:对于任意两个字符串 s 和 t,当且仅当 s.equals(t) 为 true 时,s.intern() == t.intern() 才为 true。
作者:
LoveJava8
时间:
2014-8-19 22:52
false 是因为s1在常量池中而s2在堆内存中==比较地址所以fasle; s3和s2引用了同一个地址值地址相同结果为true
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2