@Test
public void test(){
Map<String, Integer> a = new HashMap<>();
a.put("x", new Integer(0));
Integer i = a.get("x");
a.put("x", i++);
i = a.get("x");
a.put("x", i++);
i = a.get("x");
a.put("x", i++);
System.err.println(i);
}
上面的代碼的輸出是1而不是0我不明白爲什麼。有人可以解釋發生了什麼事嗎? Java的一些字節碼優化導致這種狀態?爲什麼輸出下面的代碼1而不是0?
你增量,所以你爲什麼想到要打印0? – tkausl
請使用調試器。這是瞭解代碼片段工作原理的有效方法。 –