int x = 10, y = 20;
int temp = x;
x = y;
y = temp;
類比:空杯換酒法。temp 為空杯,x 白酒,y 紅酒。白酒→空杯,紅酒→x杯,白酒→y杯。
int x = 10, y = 20;
x = x + y; // x = 30
y = x - y; // y = 30 - 20 = 10
x = x - y; // x = 30 - 10 = 20
Integer.MAX_VALUE + 1)
int x = 10, y = 20;
x = x ^ y;
y = x ^ y; // (x^y)^y = x
x = x ^ y; // (x^y)^x = y
原理:a ^ b ^ b = a,a ^ b ^ a = b。XOR 自逆性。
int x = 10;
swap(x, x); // 同一變量
// x = x ^ x = 0
// y = 0 ^ 0 = 0
// x = 0 ^ 0 = 0 → 數據丟失!
| 維度 | 中間變量 | 算術運算 | XOR 位運算 |
|---|---|---|---|
| 類型通用性 | ✅ 所有類型 | ❌ 僅數值 | ❌ 僅整數 |
| 溢出安全 | ✅ 安全 | ❌ 風險 | ✅ 安全 |
| 別名安全 | ✅ 安全 | ✅ 安全 | ❌ 歸零 |
| 可讀性 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
| 現代 JVM 性能 | 極優(寄存器分配) | 一般 | 一般 |
x, y = y, x),中間變量是標準寫法