JVM在内存中为变量分配存储单元
Demo
public static void main(String[] args) {
int n = 100;
n = 200;
int x = n;
x = x + 100;
System.out.println("x = " + x); // 300
System.out.println("n = " + n); // 200
}
Analysis
执行 int n = 100
,JVM在内存中为变量n分配一个 “存储单元”,填入值100;
n
│
▼
┌───┬───┬───┬───┬───┬───┬───┐
│ │100│ │ │ │ │ │
└───┴───┴───┴───┴───┴───┴───┘
执行 n = 200
,JVM把200写入变量n的存储单元;
n
│
▼
┌───┬───┬───┬───┬───┬───┬───┐
│ │200│ │ │ │ │ │
└───┴───┴───┴───┴───┴───┴───┘
执行 int x = n
,JVM新分配一个存储单元给变量x,并写入和变量n一样的值200
n x
│ │
▼ ▼
┌───┬───┬───┬───┬───┬───┬───┐
│ │200│ │ │200│ │ │
└───┴───┴───┴───┴───┴───┴───┘
执行 x = x + 100
,JVM先计算 x + 100
,然后将结果300写入x的存储单元。
n x
│ │
▼ ▼
┌───┬───┬───┬───┬───┬───┬───┐
│ │200│ │ │300│ │ │
└───┴───┴───┴───┴───┴───┴───┘
他の者にできたか?ここまでやれたか?この先できるか?いいや、仆にしかできない!