Just to check if the two string objects String1 and String2 are same, we use the statement
And to check the if the two String objects have the same content, we use the statement
I guess if for any set of objects if A is true then B automatically becomes true. Is this statement hold good all the times?
Thanks,
Faraz
Costi Ciudatu
Ranch Hand
Joined: Oct 24, 2006
Posts: 74
posted
0
From the JavaDoc of java.lang.Object.equals():
public boolean equals(Object obj)
Indicates whether some other object is "equal to" this one.
The equals method implements an equivalence relation on non-null object references:
It is reflexive: for any non-null reference value x, x.equals(x) should return true.
It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
For any non-null reference value x, x.equals(null) should return false.
If String1 == String2, than those are two references of the same object, so you're in the x.equals(x) situation -- which is true "by contract".
Mike Simmons
Ranch Hand
Joined: Mar 05, 2008
Posts: 2782
2
posted
0
Note that quote also hints at the one exception to Faraz' statement: if string1 and string2 are both null, then statement A is true, but B will throw a NullPointerException.
Oh, and also A talks about String1 and String2, while B talks about string1 and string2, which are, as far as the Java compiler is concerned, completely unrelated things. Capitalization matters, so please pay attention to it.
Yogesh Gnanapraksam
Ranch Hand
Joined: Dec 17, 2009
Posts: 133
posted
0
Just to check if the two string objects String1 and String2 are same, we use the statement
if there are TWO string objects then the statement
String1 == String2 is going to return false.
So if you are sure there are TWO string objects then String1 == String2 should not be used.
This should be considered only to find out whether the two references are pointing to the same object.
Or you can say ..
Just to check if the two string references String1 and String2 are same, we use the statement