(Sorry if this is a duplicate, I have no idea how I would even search for this)
I just saw code similar to this:
public class Scratch
{
public static void main(String[] args)
{
Integer a = 1000, b = 1000;
System.out.println(a == b);
Integer c = 100, d = 100;
System.out.println(c == d);
}
}
When ran, this block of code will print out:
false
true
I understand why the first is false
: because the two objects are separate objects, so the ==
compares the references. But I can't figure out, why is the second statement returning true
? Is there some strange autoboxing rule that kicks in when an Integer's value is in a certain range? What's going on here?
Thanks