理论:
IntegerCache 缓存
JAVA的Integer有IntegerCache会缓存-128~127之间的对象。
如:Integer x = 100,会调用Integer的valueOf()方法,这个方法就是返回一个Integer对象,但是在返回前,作了一个判断,判断要赋给对象的值是否在[-128,127]区间中,且IntegerCache(是Integer类的内部类,里面有一个Integer对象数组,用于存放已经存在的且范围在[-128,127]中的对象)中是否存在此对象,如果存在,则直接返回引用,否则,创建一个新对象返回。
实践:
Integer a=2;
Integer b=2;
System.out.println(a==b);
Integer c=18;
Integer d=18;
System.out.println(c==d);
Integer e=127;
Integer f=127;
System.out.println(e==f);
Integer g=128;
Integer h=128;
System.out.println(g==h);
Integer i=3;
Integer j=3;
System.out.println(i==j);
得出
true
true
true
false
true
结论
在 [-128,127]区间中 进行匹配用== 是可以的,超过了就会false,可以改成 .equals() 就可以了