here i have the code below, I want to know why the same code produce different result in jdk7 and jdk8?
String s3 = new String("1") + new String("1");
System.out.println(System.identityHashCode(s3)); //JDK7 1485288136 - JDK8 985655350
String s3i = s3.intern();
System.out.println(System.identityHashCode(s3i)); //JDK7 1485288136 - JDK8 804611486
System.out.println(System.identityHashCode(s3)); //JDK7 1485288136 - JDK8 985655350
String s4 = "11";
System.out.println(System.identityHashCode(s4)); //JDK7 1485288136 - JDK8 804611486
System.out.println(s3 == s4); // JDK7 true - JDK8 false
CORRECT
Seems not because of JDK only, something about junit.
import org.junit.Test;
public class StringDemo {
@Test
public void test() {
String s3 = new String("1") + new String("1");
s3.intern();
String s4 = "11";
System.out.println(s3 == s4);
// JDK7 true - JDK8 false
}
public static void main(String[] args) {
String s3 = new String("1") + new String("1");
s3.intern();
String s4 = "11";
System.out.println(s3 == s4);
// JDK7 true - JDK8 true
}
}