我有一个问题,
在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递增。但在分配之前。 –