在 java 8 中如何评估第 2 行?
how line 2 is evaluated in java 8?
int f = 1;
f = f++;
System.out.println(f);
post 自增运算符的优先级高于赋值运算符,因此
我假设 f 的值(即 1)用于赋值并且 f 递增然后输出将为 2(因为 f 的值现在为 2)
但是输出是1,但是怎么样?我哪里错了?
我的解释导致以下代码中的正确答案
int f = 1;
int g = f++;
System.out.println(f);
在这种情况下输出为 2。
您不能在计算值之前为变量赋值。因此,您必须首先评估 f++
。由于 f++
returns 1,这是分配给 f
的值,它会覆盖 f
.
的增量值
您的第二个片段是一个完全不同的场景,因为您将 f++
的值分配给了不同的变量,所以 f
的增量值不会被覆盖。
int f = 1;
f = f++;
System.out.println(f);
post 自增运算符的优先级高于赋值运算符,因此 我假设 f 的值(即 1)用于赋值并且 f 递增然后输出将为 2(因为 f 的值现在为 2) 但是输出是1,但是怎么样?我哪里错了?
我的解释导致以下代码中的正确答案
int f = 1;
int g = f++;
System.out.println(f);
在这种情况下输出为 2。
您不能在计算值之前为变量赋值。因此,您必须首先评估 f++
。由于 f++
returns 1,这是分配给 f
的值,它会覆盖 f
.
您的第二个片段是一个完全不同的场景,因为您将 f++
的值分配给了不同的变量,所以 f
的增量值不会被覆盖。