• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Doubt on == Vs equals

 
Faraz Alig
Greenhorn
Posts: 24
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,

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
Posts: 74
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 3090
14
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 133
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
 
Jesper de Jong
Java Cowboy
Saloon Keeper
Posts: 15441
41
Android IntelliJ IDE Java Scala Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Faraz Alig wrote: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?

If you compare a String object with itself (by calling equals()) then obviously the result will always be true.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic