我有一個問題,
在Java
,確實Math.min
綁定比++
更緊?
讓我用一個例子來說明,也許有人可以向我解釋爲什麼我會得到我得到的結果。後置操作有趣的行爲()
這是我跑的方法:
private static void testIncrement() {
int x=10;
System.out.println(x++);
System.out.println(x);
x=10;
System.out.println("-----------");
System.out.println(++x);
System.out.println(x);
x=10;
System.out.println("-----------\n"+x); //10
x=Math.min(255, x++);
System.out.println(x); **//x=10 WHY NOT x=11?**
x=10;
System.out.println("-----------\n"+x);
x=Math.min(255, ++x);
System.out.println(x);
}
的結果是:
10
11
-----------
11
11
-----------
10
10
-----------
10
11
在這裏我把//x=10 WHY NOT x=11?
行我不知道爲什麼x
是10而不是11,也許有人可以向我解釋這一點。
看起來好像Math.min
創建了x
(現在是10)的副本,它用來做Math.min
。然後原始x
從10增加到11,但仍然爲10的副本從Math.min
出來並覆蓋增加的那個。
這是否有意義? 有沒有人有解釋爲什麼x是10而不是11在這種情況下?
感謝
PS - 我完全理解How do the post increment (i++) and pre increment (++i) operators work in Java?
因爲在將值10傳遞給Math.min方法後,x遞增。但在分配之前。 –