【发布时间】:2023-03-26 21:34:01
【问题描述】:
所以基本上我在做一些研究,因为我很想知道它是否可以完成,我发现了这段代码:
import java.lang.reflect.Field;
public class Main {
public static void main(String[] args) throws Exception {
Class cache = Integer.class.getDeclaredClasses()[0];
Field c = cache.getDeclaredField("cache");
c.setAccessible(true);
Integer[] array = (Integer[]) c.get(cache);
array[132] = array[133];
int n = 2+2;
System.out.println(n);
System.out.printf("%d",2 + 2);
}
}
我只是好奇为什么 printf 语句现在会返回 5,但打印整数 n 仍然会给我 4。
【问题讨论】:
-
println(n)根本不使用 java.lang.Integer 类。printf确实如此,因为每个参数都被装箱了,因为所有参数都必须是对象。
标签: java class caching integer field