Java 为什么输出为0?
因为Java 为什么输出为0?,java,Java,因为++是“后增量”运算符-它在变量递增之前返回变量的值 这些步骤是: 取i(递增之前)的值并记住它 增量i 将记住的值分配给i ,因为递增后运算符返回一个时间值(x's当前值),然后递增x 试着这样做: class T { public static void main(String args[]) { int x = 0; x = x++; System.out.println(x); } } 因为您使用了后缀++运算符,这
++
是“后增量”运算符-它在变量递增之前返回变量的值
这些步骤是:
- 取
(递增之前)的值并记住它i
- 增量
i
- 将记住的值分配给
i
x
's当前值),然后递增x
试着这样做:
class T {
public static void main(String args[]) {
int x = 0;
x = x++;
System.out.println(x);
}
}
因为您使用了后缀
++
运算符,这意味着它是在赋值之后计算的。因此首先计算x=x
,因此x
保持为0
,然后计算x++
,但结果不分配给任何对象
您可以使用前缀++
操作符来实现所需的结果:x=++x代码>
从:
递增/递减运算符可以在(前缀)或之前应用
在(后缀)操作数之后。代码结果为++;和++结果;将
两者的结果都是递增1。唯一的区别是
前缀版本(++结果)计算为递增值,
而后缀版本(result++)的计算结果与原始版本相同
价值观
x++
返回零,然后递增x。赋值x=x++
将x
设置为x++
的返回值,即0
class T {
public static void main(String args[]) {
int x = 0;
x = ++x;
System.out.println(x);
}
}
相当于
x = x++;
这就是为什么输出为零
此操作符称为增量后操作符。
与增量后运算符相关的其他运算符是,每增量运算符
temp = x;
x = x + 1;
x = temp;
如果应用每增量输出将为1。因为++after是在程序运行后添加的。您可以通过以下两种方式修复它
x = ++x;
或
这是因为x++
实际上意味着“使用x
中存储的值,然后增加它”。如果您想在使用前增加值,请改为执行++x
。我现在不认为这会对输出产生影响,但您不需要导入,您可以更改:
class T {
public static void main(String args[]) {
int x = 0;
x += 1;
System.out.println(x);
}
}
致:
如前几位回答者所述,显示了定期增量后增量的示例:
x++;
类T{
公共静态void main(字符串args[]){
对于(int i=0;i<6;i++){
int x=0;
x=x+1+i;
系统输出println(x);
}
}
}
搜索的第一个结果是链接
它表现为观察到的行为的原因是因为相互作用
运算符优先级和++
操作人员后缀增量首先发生(请参见您最喜欢的副本)
操作员优先顺序图);但根据定义,后缀返回
变量的上一个值。所以“返回值”不是
“原始x加上一”,但只是“原始x”(x,在这里)
点,实际上包含递增的值)。这个返回值
然后被分配到x,这将覆盖++在第一个
地点。在表达式x=x++中,递增的值丢失,
被最后发生的赋值覆盖
谷歌是你的朋友!:) 解释您正在做的事情:
class T {
public static void main(String args[]) {
for (int i = 0; i < 6; i++) {
int x = 0;
x = x+1+i;
System.out.println(x);
}
}
}
看看这是否有助于解释下面的答案,并给出原因。如果您想知道更多的原因,并且实际上还需要一个解决方案,请使用前缀运算符:++x
。可能与x++
重复,或者仅是x++
,而不使用x=
部分。:)谢谢RichieHindle!很好的解释@用户989093确保在最适合您的问题的答案上使用绿色复选标记。
x++;
class T {
public static void main(String args[]) {
for (int i = 0; i < 6; i++) {
int x = 0;
x = x+1+i;
System.out.println(x);
}
}
}
class T {
public static void main(String args[]) {
int x = 0; // x is zero
x = x++; // assign x to be x (which is 0).
// then increment a non-existant variable by 1
System.out.println(x); //print 0
}
}