Granny's Programming Pearls
"inside of every large program is a small program struggling to get out"
JavaRanch.com/granny.jsp
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes question about testing equal 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 "question about testing equal" Watch "question about testing equal" New topic
Author

question about testing equal

michael wang
Ranch Hand

Joined: Feb 06, 2002
Posts: 35
1.Float s = new Float(0.9F);
2.Float t = new Float(0.9F);
3.Double u = new Double(0.9);
4.System.out.println(s==u);
5.System.out.println(t.equals(u));
how come the fourth line doesnt compile for incompatible reason?
i think s will be changed to double and then compare with u,is that right?
thanks


--<br />a java beginner from China
Rob Ross
Bartender

Joined: Jan 07, 2002
Posts: 2205
Two objects can only be equal if they are the same object, and they can only be the same object if they are at least the same type. You can't compare two un-like types using ==, any more than you can compare a boolean and an int using <.


Rob
SCJP 1.4
michael wang
Ranch Hand

Joined: Feb 06, 2002
Posts: 35
Originally posted by Rob Ross:
Two objects can only be equal if they are the same object, and they can only be the same object if they are at least the same type. You can't compare two un-like types using ==, any more than you can compare a boolean and an int using <.


t.equals(u) returns false?
why?
aymen esawey
Ranch Hand

Joined: Jan 29, 2002
Posts: 61
equals() test first for the type of the object at runtime if the object is not of the same type ,it returns false and no exceptions are raised.
hope am right,


Aymen Esawey<br />SCJP <img src="smile.gif" border="0"> <br /><a href="http://www.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=32&t=001968" target="_blank" rel="nofollow">how to nuke the SUN </a>
michael wang
Ranch Hand

Joined: Feb 06, 2002
Posts: 35
Originally posted by aymen esawey:
equals() test first for the type of the object at runtime if the object is not of the same type ,it returns false and no exceptions are raised.
hope am right,

clear,thanks
Engin Okucu
Ranch Hand

Joined: Feb 09, 2002
Posts: 174
Hi Michael,
I thought the definition of the Api could help you ...
public boolean equals(Object obj) :
Indicates whether some other object is "equal to" this one.
The equals method implements an equivalence relation:
It is reflexive: for any reference value x, x.equals(x) should return true.
It is symmetric: for any 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 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 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 object is modified.
For any non-null reference value x, x.equals(null) should return false.
The equals method for class Object implements the most discriminating possible equivalence relation on objects; that is, for any reference values x and y, this method returns true if and only if x and y refer to the same object (x==y has the value true).
Parameters:
obj - the reference object with which to compare.
Returns : true is the object is the same as the obj argument; false otherwise
Thanks...I think now it's clearer for you?

Engin.
 
 
subject: question about testing equal