對於'a = a++;'操作的理解
阿新 • • 發佈:2022-03-04
今天偶然看到這個問題:
'a = a++;'操作執行完後,a的值不變。
自己簡單測試了一下,確實是這樣,開始時沒想明白,以下是對該操作的理解及記錄。
int a = 10;
1)a = a + 1;
System.out.println(a); // a = 11;
2)a++;
System.out.println(a); // a = 11;
3)a = a++;
System.out.println(a); // a = 10;
情況1)比較好理解:
讀取a的值10,加1,結果11,重新賦值給a;
情況2)3)可以藉助HashMap的put方法來理解:
將'a++'理解為put("a", 10 + 1)操作,a的值在map中更新為11,方法返回舊值10;
然後來理解2)和3)的區別:
a++; // put("a", 10 + 1),a的值更新為11,返回的舊值10沒有被接收(即丟棄)
System.out.println(a); // 讀取a的值11
a = a++; // a = put("a", 10 + 1),a的值更新為11,返回的舊值10又重新賦值給a(即a的值又變回10)
System.out.println(a); // 讀取a的值10