Object is same but the output is different ? please help
<blockquote>
  <p><strong>Possible Duplicate:</strong><br>
  <a href="http://stackoverflow.com/questions/594604/string-equality-vs-equality-of-location">String equality vs equality of location</a>  </p>
</blockquote>

<pre><code>public class AboutStrings{
public static void main(String args[]){
String s1="hello";
String s2="hel";
String s3="lo";
String s4=s2+s3;

//to know the hash codes of s1,s4.

System.out.println(s1.hashCode());
System.out.println(s4.hashCode());

// these two s1 and s4 are having same hashcodes.

if(s1==s4){
System.out.println("s1 and s4 are same.");
}else
System.out.println("s1 and s4 are not same.");
}
}
</code></pre>

<p>In the above example even though s1 and s4 are refering to 
same object(having same hash codes),</p>

<p>it is printing s1 and s4 are not same.</p>

<p>Can anybody explain in detail why it is behaving like this?</p>
