This week's book giveaway is in the Clojure forum.
We're giving away four copies of Clojure in Action and have Amit Rathore and Francis Avila on-line!
See this thread for details.
Win a copy of Clojure in Action this week in the Clojure forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

== and equals()

 
adam Lui
Ranch Hand
Posts: 186
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Integer x = new Integer (22);
Integer y = new Integer (22);
if(x == y) System.out.println ("x == y is true"); else System.out.println ("x==y is false");
if(x.equals(y)){System.out.println ("x.equals(y) is true");} else System.out.println ("x.equals(y) is false");

the output is
---------- Capture Output ----------
x==y is false
x.equals(y) is true
> Terminated with exit code 0.

I doubt about x and y have the same value, why it turns out false?
x and y is true, because they share the same data type, or based on same value 22?
 
marc weber
Sheriff
Posts: 11343
Java Mac Safari
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
== is a simple comparison of values. For primitives, this is straight forward. For references, it compares whether the same object is referenced.

When you create instances using "new," you are creating distinct objects. Even if two instances might be considered "equal" according to how their equals method is implemented, they are separate objects and == will indicate this.
[ September 18, 2007: Message edited by: marc weber ]
 
It is sorta covered in the JavaRanch Style Guide.
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic