Forums Register Login
how is this possible please explain
Integer i1=1000;

Integer i2=1000;

if(i1!=i2) System.out.println("different objects");

if(i1.equals(i2)) System.out.println("meaningfully equal");


different objects //how is this possible please explain

meaningfully equal

b]Integer i3=10;

Integer i4=10;

if(i3==i4) System.out.println("same objects");

if(i3.equals(i4)) System.out.println("meaningfully equal");


same objects //how is this possible please explain

meaningfully equal

how if(i3==i4) and if(i1!=i2) both can be true
This is due to autoboxing. In your first example, the value being boxed is outside the range -128 to 127. In your second example, the value is within that range. As explained under JLS - 5.1.7 Boxing Conversion...

If the value p being boxed is true, false, a byte, a char in the range \u0000 to \u007f, or an int or short number between -128 and 127, then let r1 and r2 be the results of any two boxing conversions of p. It is always the case that r1 == r2.

Thanks for the solution.
Please note that this exact same question has been asked and answered here many times before:


Please do a search before you post, you'll also find answers quicker if you do that.
Wink, wink, nudge, nudge, say no more ... https://richsoil.com/cards

This thread has been viewed 1066 times.

All times above are in ranch (not your local) time.
The current ranch time is
Jun 22, 2018 15:04:47.