This week's giveaway is in the Android forum.
We're giving away four copies of Android Security Essentials Live Lessons and have Godfrey Nolan on-line!
See this thread for details.
The moose likes Beginning Java and the fly likes Autoboxing Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Autoboxing" Watch "Autoboxing" New topic
Author

Autoboxing

Hiram Nascimento
Greenhorn

Joined: Jul 09, 2009
Posts: 13
Hey folks,

My questions are in code comments.



Thanks,
Hiram
Gamini Sirisena
Ranch Hand

Joined: Aug 05, 2008
Posts: 347
See if this will shed some light on some of your questions...

Integer i2 = new Integer(100);
System.out.println(b2.equals(i2)); //false

Byte b2 = new Byte((byte)100);
System.out.println(b2.equals((byte)100)); //true


Also check equals method logic for Byte here..
Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19655
    
  18

Hiram Nascimento wrote:c = b; // Okay. b is "boxed" and its reference is assigned to c. Right?

Right.

// Does c get "unboxed" or b "boxed"?
print(c == b); // true

Try the following to see which occurs:

// Why false?
print(c.equals(120)); // false

Because 120 is auto boxed into an Integer, and a Byte and an Integer are never equals.

// Is c "unboxed" or the integer literal "boxed"?
print(c == 120); // true

See my above little test code.


SCJP 1.4 - SCJP 6 - SCWCD 5 - OCEEJBD 6
How To Ask Questions How To Answer Questions
Hiram Nascimento
Greenhorn

Joined: Jul 09, 2009
Posts: 13
Thanks guys! Much clear now...
cchetan jain
Ranch Hand

Joined: Jul 05, 2009
Posts: 30
hi guys..sorry frnds..i m not cleared with the concept of boxing and unboxing concept yet..what is the concept of equals and ==.??please explain this..thanks in advance
Hiram Nascimento
Greenhorn

Joined: Jul 09, 2009
Posts: 13
Hi cchetan,

When I do "if(c == b)", the == is doing a comparison of the references of these vars. The Byte.equals() method returns true if the equals parameter is a "instanceof" Byte. That's how it was implemented.

The autoboxing is related the Wrapper classes of primitive types. Each primitive type in Java (int, byte, long, float, etc) has a corresponding (wrapper) class (Integer, Byte, Long, Float, etc) to be used when an object is expected instead of a primitive value/type.

Before Java 5.0, the process to handle the interaction of primitive types and its wrappers was "manual"... Autoboxing came to make things easier.

You should read more about Wrapper classes and Autoboxing to understand better that process. Not too complex. But some aspects are implementation details you need to know.

Not easy to summarize all this in one post, but read more about Wrapper classes and Autoboxing and tell us your questions. I'm still studying that too.

Hiram
Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19655
    
  18

cchetan jain wrote:hi guys..sorry frnds..i m not cleared with the concept of boxing and unboxing concept yet..what is the concept of equals and ==.??please explain this..thanks in advance

In short:

Use equals if both operands are Objects (wrapper instances).
Use == if at least one is a primitive.
Use the valueOf method combined with equals if one is a primitive and the other is a wrapper instance that may perhaps be null to prevent NullPointerExceptions:
cchetan jain
Ranch Hand

Joined: Jul 05, 2009
Posts: 30
thanks hiram for the concern..can you send me a link for the better understanding of wrapper classes..i have read kathy and bates already..but still confused..so please send me link
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Autoboxing
 
Similar Threads
Chew on this!
Wrapper problem
Using ==,equals with Wrappers and Strings Problem
simple doubt - Please help !!
Boxing and unboxing in Java 5