The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Wrappers 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 "Wrappers" Watch "Wrappers" New topic


Smitha Ballikar
Ranch Hand

Joined: Aug 02, 2005
Posts: 99
Cleverson Schmidt
Ranch Hand

Joined: Feb 17, 2004
Posts: 55

Although they for sure represent the same value, they are different objects. Each time you call toString, a new String object is created. The Byte class has its toString method overriden to convert its byte value to a String. As String objects are immutable, each time you call toString, a new String has to be created and this is why you get the "False"
Ahmed Huq

Joined: Aug 16, 2005
Posts: 2
My guess is....

"==" compares if two references point to the same object or not (does not compare the state of the object or any kind if equality related to the objects).

b1.toString method (in both sides) returns two different instances of string.

That is why the "==" operator returns "false"
Smitha Ballikar
Ranch Hand

Joined: Aug 02, 2005
Posts: 99
raghu babu
Ranch Hand

Joined: Jul 05, 2005
Posts: 60
Try passing a value of "10" instead of "127" to the constructor and see the result (surprisingly, you get true).

This is due to the weird code, that exists in Integer.toString(int i) method. I'm hoping someone can explain the logic why Sun developed such an anamoly for this method.
Ryan Kade
Ranch Hand

Joined: Aug 16, 2005
Posts: 69
Wow, that is bizarre. I never knew that. Apparently any call to Integer.toString(int) with a value between -3 and 10 inclusive will return true because it uses the same string constant. Did they somehow determine that these values were so common that having them all point to the same string representation in memory was more efficient?


Looking further at the JDK, it must have something to do with this "invariant divison by multiplication" algorithm they use to make the toString conversion quicker. But the algorithm is a little obscure for my small brain.
[ August 24, 2005: Message edited by: Ryan Kade ]
I agree. Here's the link:
subject: Wrappers
It's not a secret anymore!