From
5.1.7 of the Java Language Specification...
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... Ideally, boxing a given primitive value p, would always yield an identical reference. In practice, this may not be feasible using existing implementation techniques. The rules [linked to] above are a pragmatic compromise...
In other words, two autoboxed instances of Integer, for example, will have equal references (==) if their wrapped values are equal and within byte range, -128 to 127. Outside of this range, there is
apparently no guarantee.