The rules on Autoboxing on Integer fields is as follows:
If the value is between -128 and 127 and you are using the auto boxing method of creating your Integer object, then the value is immutable. This therefore means that if 2 or more objects have the same value, only 1 occurance of the value will be found in memory and the value is therefore shared. If one of the Integer objects is declared using the new Integer method (e.g.Integer i8 = new Integer(100)

then there will be more that one object allocated in memory. Outside of this range (-128 to 127) the value becomes mutable and therefore irrespective of the method of the Integer creation (autoboxing or new Integer) the objects will always reference different objects.
e.g.
public class test {
public static void main (String[] args) {
// immutable references
Integer i7 = 100;
Integer i8 = new Integer(100);
Integer i9 = 100;
if (i7!=i8) System.out.println("i7 and i8 reference different objects");// if statement returns true
if (i7==i8) System.out.println("i7 and i8 reference same object");// if statement returns false
if (i7.equals(i8)) System.out.println("i7 and i8 contents are the same");// if statement returns true
if (i7==i9) System.out.println("i7 and i9 reference same object");// if statement returns true
// mutable value comparison because value is greater than 127
Integer i1=1000;
Integer i2=1000;
Integer i3=new Integer(1000);
if(i1 != i2)System.out.println("i1 and i2 reference different objects");// if statement returns true
// because they are referencing different objects
if(i1 == i2)System.out.println("i1 and i2 reference same object");// if statement returns false
if(i1.equals(i2))System.out.println("i1 and i2 contents are the same");// if statement returns true
if(i1!=i3)System.out.println("i1 and i3 reference different objects");// if statement returns true
if(i1.equals(i3))System.out.println("i1 and i3 contents are the same");// if statement returns true
}
}