代码如下:
package basic;
import java.lang.reflect.Field;public class TestField { public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
@SuppressWarnings("rawtypes")
Class cache = Integer.class.getDeclaredClasses()[0];
Field myCache = cache.getDeclaredField("cache");
myCache.setAccessible(true);
Integer[] newCache = (Integer[]) myCache.get(cache); newCache[132] = newCache[133];
int a = 2;
int b = a + a;
System.out.printf("%d + %d = %d", a, a, b);
}
}运行结果如下:
2 + 2 = 5
为什么会有这样的输出结果呢?
另外附上内部类IntgerCache的源码如下:

30秒到达战场
红颜莎娜
随时随地看视频慕课网APP
相关分类