Java 假设;“价值”;是任意整数:是值++;直接等价于value=value+;1.

Java 假设;“价值”;是任意整数:是值++;直接等价于value=value+;1.,java,expression,operands,Java,Expression,Operands,我知道两者的值是相同的(比如3到4)。然而,计算机是否将两者视为相同的,它们是否都被视为表达式 提前谢谢 两者都是,除了(value++)计算为旧值,而(value=value+1)计算为新值。 表达式中(value=value+1)的直接等价物是(++value) 请注意,它们都不是线程安全的 为了增加乐趣,这里还有两个等效选项: value += 1; value -= -1; 不,my friend++值相当于value=value+1,因为它正在更改新的值预增量运算符 value++正

我知道两者的值是相同的(比如3到4)。然而,计算机是否将两者视为相同的,它们是否都被视为表达式


提前谢谢

两者都是,除了
(value++)
计算为旧值,而
(value=value+1)
计算为新值。
表达式中
(value=value+1)
的直接等价物是
(++value)

请注意,它们都不是线程安全的

为了增加乐趣,这里还有两个等效选项:

value += 1;
value -= -1;

不,my friend++值相当于value=value+1,因为它正在更改新的值预增量运算符
value++正在更改保存在内存中的旧值,即对其进行后期递增,这是不正确的。相反,++value与value=value+1相同

++值是一个预增量。Value++是一个后期增量

“Post”是指在读取变量后进行增量Pre’表示之前-因此变量值首先递增,然后在表达式中使用

例如:

int i, x;

i = 2;
x = ++i;
// now i = 3, x = 3

i = 2;
x = i++; 
// now i = 3, x = 2

只要
value
是简单变量或简单数组元素引用,则为True。如果它类似于
method(args).field
,其中
method(args)
返回一个对象引用,那么
++method(args).field
调用该方法一次,而
method(args).field=method(args).field+1
调用它两次。这是唯一一个真正区分表达式本身的值与计算任一表达式后驻留在
value
中的数字的答案。表达式的值各不相同,但在计算任一表达式后,
value
将保持相同的数字(假设目标没有副作用,正如@ajb所指出的)。