File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
Win a copy of Clojure in Action this week in the Clojure forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

equals method

 
Rajeev Nair
Ranch Hand
Posts: 51
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
public class Q19
{
public static void main(String[] args)
{
MyClass a = new MyClass(100);
MyClass b = new MyClass(100);
if(a.equals(b))
System.out.println("Objects have the same values");
else
System.out.println("Objects have different values");
}
}
class MyClass
{
static int maxElements;
MyClass(int maxElements)
{
this.maxElements = maxElements;
// System.out.println("value:" +this.maxElements); the value is 100 for both a and b
}
}
The value for both a and b is 100 . When equals method gets executed it prints "Objects have different values". Why?.
 
WiLL Tao
Ranch Hand
Posts: 56
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Now the equals method is only SHALLOW compare.
It only compare the hasocode of object(usually memory address).
MyClass a and MyClass b both use new keyword for creating, they have different hashcode,so "Objects have different values" will be printed in the end.
Hope it helps.
[ April 21, 2002: Message edited by: WiLL Tao ]
 
Rajeev Nair
Ranch Hand
Posts: 51
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks Will,
But my understanding was equals method compares the value whereas == compares the memory address.
if i replace equals with (a==b), it prints
"Objects have different values"
 
R Arun
Ranch Hand
Posts: 33
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Since there is no equals() method defined by MyClass, the one from Object is used. The equals() method in Object effectively does a == comparison as explained by Will.
 
WiLL Tao
Ranch Hand
Posts: 56
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Some class override the equals method, so it compare the vale,eg:String class
JAVA DOC
Overrides:
equals in class Object

The interesting is that StringBuffer does not override equals meothd.
Please look this code

Hope it helps.
 
Rajeev Nair
Ranch Hand
Posts: 51
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks Will and Arun, I got it now
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic