public static void main(String[] args) {
String s = new String("abc");
String s1 = "abc";
String s2 = new String("abc");
System.out.println(s == s.intern());
System.out.println(s1 == s1.intern());
System.out.println(s1.intern() == s2.intern());
}
String s = new String("abc");
String s1 = "abc";
String s2 = new String("abc");
System.out.println(s == s.intern());
System.out.println(s1 == s1.intern());
System.out.println(s1.intern() == s2.intern());
}
但是并不理解深层的含义。
对于对象,是的。对于原生值(int,float)则是错的。其次,对于String对象,编译器会自动优化,也就是所有在编译期可以确定相同的String("xxx"方式,而不是new String(...)),会编译成相同对象的引用。而intern对象则是在整个JVM范围内,内容相同的字符串共享的一个引用,而且永远是指向第一个出现的。在你的代码里,
第一abc是
String s = new String("abc");
然后是s
接着是指向上面红色那个abc的s1,也就是说s1就是红色的abc,也就是intern