+ 运算符 - Java 按值传递

+ operator - Java pass by value

我不明白为什么在我写的这个测试 class 中第 3 行打印 1。 我认为它会打印 2 而不是 1,因为我认为第 2 行已将 x 的值更改为 2。

有人能给我解释一下吗?这是与 java 按值传递有关还是其他解释?

public class Test{

    public static void main(String[] args) {
        int x = 1;  // line 1
        System.out.println(x+1); //line 2 prints 2
        System.out.println(x); //line 3 but why does this line prints 1?

    }

}

输出:

2

1

解释很简单,x + 1不会改变x的值,而是returns一个完全独立的int,其值比[大一=11=].

对于第 2 行,输出为 2,因为 x 已经是 1,而您要添加另一个使其成为 2 但不更改 x 的值。 这也是第 3 行 1 的原因。

在第 2 行尝试使用 x++,然后在第 3 行查看结果。

符合预期。

您正在打印 x+1。 x+1 不会修改 x 的值,除非您明确地将新值赋给 x。

如果您按如下方式更改代码,您将获得所需的输出。

x= x+1;
System.out.println(x);