Two Laptop Bag*
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes equals method Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "equals method" Watch "equals method" New topic
Author

equals method

Rajeev Nair
Ranch Hand

Joined: Mar 11, 2002
Posts: 51
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?.


Raj<br />Sun Certified Java Programmer
WiLL Tao
Ranch Hand

Joined: Dec 14, 2001
Posts: 56
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 ]

Thank Folks who <b>Make Sense</b> here.<br />SCJP Platform 2
Rajeev Nair
Ranch Hand

Joined: Mar 11, 2002
Posts: 51
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

Joined: Apr 20, 2002
Posts: 33
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

Joined: Dec 14, 2001
Posts: 56
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

Joined: Mar 11, 2002
Posts: 51
Thanks Will and Arun, I got it now
 
jQuery in Action, 2nd edition
 
subject: equals method
 
Similar Threads
equivalence
equals()
constructor - help needed
.equals()
Tell me the output?