+ 运算符 - 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);
我不明白为什么在我写的这个测试 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);