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
    }
}