title: String + String vs String + String returned from method
body: <p>Today while working with String's i have encountered a behavior i don't know before. I'm not able to understand what's happening internally.</p>
  
  <pre><code>    public String returnVal(){
           return "5";
       }
   String s1 = "abcd5";
   String s2 = "abcd"+"5";
  
   String s3 = "abcd5";
   String s4 = "abcd"+returnVal();
  
   System.out.println(s1 == s2);
   System.out.println(s1.equals(s2));
   System.out.println(s3 == s4);
   System.out.println(s3.equals(s4));
  </code></pre>
  
  <p>My expectation is printing "true" from all s.o.p's but s3 == s4 is false, why? </p>