求大佬解答
环境:java8 之前版本不考虑
执行顺序: 第一行 天 第二行 地 第三行 人 三行代码 每次都只执行一句代码 即 天地人 一次只执行一个
观察结果 求解答 为什么结果不同
能把我讲明白 直接发收款码
文章看了几篇 讲的各有各的道理
放在单个可以解释通 但是一起看 就说不通了
public class InitTest { public static void main(String[] args) { new InitTest().testA();//第一行 天 // new InitTest().testB();//第二行 地 // new InitTest().testAB();//第三行 人 } void testA(){ String s = new String("helloworld"); s.intern(); String s2 ="helloworld"; System.out.println(System.identityHashCode(s)); System.out.println(System.identityHashCode(s.intern())); System.out.println(System.identityHashCode(s2)); System.out.println(s == s2);// } void testB(){ String s3 = new String("hello")+new String("world"); s3.intern(); String s4 ="helloworld"; System.out.println(System.identityHashCode(s3)); System.out.println(System.identityHashCode(s3.intern())); System.out.println(System.identityHashCode(s4)); System.out.println(s3 == s4);// } void testAB(){ String s = new String("helloworld"); s.intern(); String s2 ="helloworld"; System.out.println(System.identityHashCode(s)); System.out.println(System.identityHashCode(s.intern())); System.out.println(System.identityHashCode(s2)); System.out.println(s == s2);// String s3 = new String("hello")+new String("world"); s3.intern(); String s4 ="helloworld"; System.out.println(System.identityHashCode(s3)); System.out.println(System.identityHashCode(s3.intern())); System.out.println(System.identityHashCode(s4)); System.out.println(s3 == s4);// } }