title: Confuse about String reference comparison == with intern
body: <p>I read this <a href="https://stackoverflow.com/questions/1855170/when-should-we-use-intern-method-of-string-on-string-constants">when should we use intern method of string on string constants</a> but still not very clear with String == compare also with intern(). I have a couple examples. Can someone help me understand this better.</p>
  
  <pre><code>String s1 = "abc";
  String s2 = "abc";
  String s3 = "abcabc";
  String s4 = s1 + s2;
  
  System.out.println(s3 == s4);                            // 1. why false ?
  System.out.println(s3 == s4.intern());                   // 2. why true ?
  System.out.println(s4 == s1 + s2);                       // 3. why false ?
  System.out.println(s4 == (s1 + s2).intern());            // 4. why false ?
  System.out.println(s4.intern() == (s1 + s2).intern());   // 5. why true ?
  </code></pre>