Golgappa.net | Golgappa.org | BagIndia.net | BodyIndia.Com | CabIndia.net | CarsBikes.net | CarsBikes.org | CashIndia.net | ConsumerIndia.net | CookingIndia.net | DataIndia.net | DealIndia.net | EmailIndia.net | FirstTablet.com | FirstTourist.com | ForsaleIndia.net | IndiaBody.Com | IndiaCab.net | IndiaCash.net | IndiaModel.net | KidForum.net | OfficeIndia.net | PaysIndia.com | RestaurantIndia.net | RestaurantsIndia.net | SaleForum.net | SellForum.net | SoldIndia.com | StarIndia.net | TomatoCab.com | TomatoCabs.com | TownIndia.com
Interested to Buy Any Domain ? << Click Here >> for more details...

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.");
}
}

Somebody told me that, == operator compares references of
the objects.
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?

Thanks in Advance
RavuriVinod

Answer Posted / vishal arora

it is true that == compares the refernce but in this case
it is retuning the false because the refernce is not the
same.
Strings are final in Java
so s4=s2+s3 will create a new String and s1 and s4 will
refer to two differnt strings

also hashcode will be equal for the same refernce but it
may also be equal for differnt refernces hascode is nothing
but a bucket so there can be multiple object refernce in
same bucket the only condition is for equals method
returning true must have same hashcode

so always use .equals methods and not == to compare the
strings

Is This Answer Correct ?    10 Yes 0 No



Post New Answer       View All Answers


Please Help Members By Posting Answers For Below Questions

Why unicode is important?

940


what methods would you overwrite in java.lang.object class?

1004


Does apple use java?

953


Why java is said to be pass-by-value ?

1043


What is defined as false sharing in the context of multithreading?

1045


What is method reference?

979


Which is the best approach for creating thread ?

1216


Write a program to check for a prime number in java?

1041


What are the steps in the jdbc connection?

1025


What is the difference between assignment and initialization?

1051


What are methods and how are they defined?

1212


Explain listiterator and methods in listiterator?

1021


What is string builder?

894


What are different types of constants?

1052


Can we initialize the final blank variable?

1090