title: Getting strange output when printing result of a string comparison
body: <p>I am facing a problem with this line (commented below):</p>
  
  <pre><code>System.out.println("Using == ::"+s3==s4)
  </code></pre>
  
  <p>which outputs <code>false</code>.</p>
  
  <p>However, <code>System.out.println(s3==s4)</code> outputs <code>true</code>.</p>
  
  <p>Now, I am not able to understand why I am getting this result:</p>
  
  <pre><code>public class string {
      public static void main(String[] args){
          String s3="Shantanu";
          String s4=s3;
          String s1=new String("java");
          String s2=new String("javaDeveloper");
  
          System.out.println("Using Equals Method::"+s1.equals(s2));
          System.out.println("Using Equals Method::"+s3.equals(s4));
          System.out.println("Using == ::"+s3==s4);//Problem is here in this line
          System.out.println(s1+"Directly printing the s2 value which is autocasted from superclass to string subclass ");
          System.out.println("Directly printing the s1 value which is autocasted from superclass to string subclass "+s2);
          System.out.println(s3);
      }
  }
  </code></pre>
  
  <pre>
  Output-Using Equals Method::false
  Using Equals Method::true
  Using == ::false
  java Directly printing the s2 value which is autocasted from superclass to string subclass
  Directly printing the s1 value which is autocasted from superclass to string subclass javaDeveloper
  </pre>