引言:今天上班时,有个同事在群里问了一句
public static void main(String[] args) {
Integer a = 1;
Integer b = a;
b = 2;
System.out.println(a);
}
这个输出什么。以我对于我们猿的尿性的熟知程度,当机立断告诉他 “1”,然后他问了一句为什么是1。我想了一会儿居然不能很好的解释,于是就去探究了一番。当Integer=1时,我们的JVM做了什么。
使用工具 :javac,javap,文本文档,显示器,键盘,鼠标,脑子 (脑子:我没有你这个逗逼主人)
首先,我先去查看了一下Integer的源码,发现了两段关键代码
public static Integer valueOf(int i) {
assert IntegerCache.high >= 127;
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
public Integer(int value) {
this.value