String s1 = new StringBuilder("dsada").append("dfgdfgd").toString();
String s3 = new StringBuilder("aaaa").toString();
System.out.println(s1.intern() == s1); //true
System.out.println(s3.intern() == s3); //false
the s1 and s3 finally invoke StringBuilder.toString, the method toString() contrust a new String(),and then invoke the String.intern(),the result is different,it confused me a lot.
@Override
public String toString() {
// Create a copy, don't share the array
return new String(value, 0, count);
}