I am learning Java basic concept recently, when I tried some code samples about String.intern
there was a weird thing happened. Code below:
Snippet 1(normal):
String str1 = new String("0") + new String("0");
str1.intern();
String str2 = "00";
assertTrue(str1 == str2); // pass
assertTrue(str1.equals(str2)); // pass
Snippet 2(weird):
String str1 = new String("1") + new String("1");
str1.intern();
String str2 = "11";
assertTrue(str1 == str2); // fail; what happened???
assertTrue(str1.equals(str2)); // pass
Snippet 3(normal):
String str1 = new String("2") + new String("2");
str1.intern();
String str2 = "22";
assertTrue(str1 == str2); // pass
assertTrue(str1.equals(str2)); // pass
So, I don't understand what happened about new String("1")
, it's really really confused, I need your help, Thanks a lot!