0

I'm looking into the identity of integers, I know an Object is identical to another Object when they occupy the same memory space, it can be shown by the following code

Integer a = 1;
Integer b = a;
System.out.println(a == b);

this will return true because the reference b is pointing to a, when looking at equality there are conditions that needs to be met for any Object to be equal to another, using the following code

Integer a = 1000;
Integer b = 1000;
System.out.println(a == b);

this will return false because a and b are two different objects, and this makes sense, but here is where I get confused, if I write

    Integer a = 1;
    Integer b = 1;

    Integer c = 1000;
    Integer d = 1000;

    System.out.println(a == b);

    System.out.println(c == d);

the first print will return true and the last will return false, since all four integers are different objects, they should return false, why does the first return true ? I looked at the Integer.valueOf() method (based on my knowledge of boxing and unboxing) and found that once a value is bigger than 128 (1 Byte) its cached differently, why is that? can anyone perhaps explain this ?

Christiaan
  • 639
  • 1
  • 8
  • 18

0 Answers0