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.");
}
}
In the above example even though s1 and s4 are refering to
same object(having same hash codes),
it is printing s1 and s4 are not same.
Can anybody explain in detail why it is behaving like this?
Answer
Just because two objects have the same hash code does not mean they are the same object (you are checking with == the object identity!).
You may want to call
s1.equals(s4)
instead - but even then, both could have the same hash code without being equal either: two objects that are equal must have the same hash code (to work properly in Collections etc), but not vice versa.
No comments:
Post a Comment