Java 增量前后,无循环
有人能解释一下为什么Java 增量前后,无循环,java,Java,有人能解释一下为什么z的结果等于12? 我已经读过增量前后的内容,但这里的内容对我来说仍然没有意义 public static void main(String[] args) { int x = 1, y = 2, z = 3; x = x + y; y = y + x; z = z + (x++) + (++y); System.out.print("x = " + x + "\ny = " + y + "
z
的结果等于12
?
我已经读过增量前后的内容,但这里的内容对我来说仍然没有意义
public static void main(String[] args) {
int x = 1, y = 2, z = 3;
x = x + y;
y = y + x;
z = z + (x++) + (++y);
System.out.print("x = " + x + "\ny = " + y + "\nz = " + z);
}
}
就像我看到的:
x=x+y
:x
->1
(后增量为1)+y
->3
(前增量为1),x=4
y=y+x
:y
->4
(预加1)+x
->2
(后加1),y=6
z=z+(x++)+(++y)
:z
->3+x
->3
(后增量为1)+y
->5
(前增量为1),z
=11
y = x++; // This assignes x 's value to y then increment x by 1
y = ++x; // This increments x by one then assigns new x's value to y.
在你的代码上
int x = 1, y = 2, z = 3;
x = x + y;
// x = 3
y = y + x;
// y = 5
z = z + (x++) + (++y);
// z = 3 + 3 + 6 --> 12
这z=z+(x++)+(++y)代码>代码等于以下三行代码的组合:
y = y + 1;
z = z + x + y;
x = x + 1;
在你的代码上
int x = 1, y = 2, z = 3;
x = x + y;
// x = 3
y = y + x;
// y = 5
z = z + (x++) + (++y);
// z = 3 + 3 + 6 --> 12
这z=z+(x++)+(++y)代码>代码等于以下三行代码的组合:
y = y + 1;
z = z + x + y;
x = x + 1;
请参阅下面代码中的注释
在这个问题中,您自己的注释的主要问题是,您看到的是在没有任何注释的情况下,出现了增量前运算符和增量后运算符。例如,在x=x+y
中,这是一个简单的赋值,任何地方都没有增量
public static void main(String[] args) {
int x = 1, y = 2, z = 3;
// so now (x,y,z) == (1,2,3)
x = x + y;
// so now (x,y,z) == (3,2,3)
y = y + x;
// so now (x,y,z) == (3,5,3)
z = z + (x++) + (++y);
// here, x++ would return 3 (unincremented)
// ++y would return 6 (incremented)
// so now z = 3 + 3 (unincremented x) + 6 (incremented y) == 12
// and in the process both x and y have been incremented
// so we have (x,y,z) == (4,6,12)
System.out.print("x = " + x + "\ny = " + y + "\nz = " + z);
}
}
请参阅下面代码中的注释
在这个问题中,您自己的注释的主要问题是,您看到的是在没有任何注释的情况下,出现了增量前运算符和增量后运算符。例如,在x=x+y
中,这是一个简单的赋值,任何地方都没有增量
public static void main(String[] args) {
int x = 1, y = 2, z = 3;
// so now (x,y,z) == (1,2,3)
x = x + y;
// so now (x,y,z) == (3,2,3)
y = y + x;
// so now (x,y,z) == (3,5,3)
z = z + (x++) + (++y);
// here, x++ would return 3 (unincremented)
// ++y would return 6 (incremented)
// so now z = 3 + 3 (unincremented x) + 6 (incremented y) == 12
// and in the process both x and y have been incremented
// so we have (x,y,z) == (4,6,12)
System.out.print("x = " + x + "\ny = " + y + "\nz = " + z);
}
}
让我们对z=z+(x++)+(++y)行做一个简单的分析代码>(无实际代码):
让我们对z=z+(x++)+(++y)行做一个简单的分析代码>(无实际代码):
x=x+y
中没有后增量或预增量,那么为什么您认为这些表达式涉及任何后增量或预增量?Marcin Szymczak所说的是使用IDE的调试器逐步完成代码。您可以设置断点并在变量更改时检查变量,以查看不同的操作对结果的影响。如果您不使用IDE并且尝试设置它太困难,您可以始终依赖println
debugger:):):@ajb,这是因为当我运行代码时,它给了我x=4,y=6。所以我只是认为这是解决问题的方法。现在我很清楚,我真的误解了整件事。x=x+y
中没有后增量或预增量,那么为什么你认为这些表达式涉及任何后增量或预增量?Marcin Szymczak说的是使用IDE的调试器来逐步处理代码。您可以设置断点并在变量更改时检查变量,以查看不同的操作对结果的影响。如果您不使用IDE并且尝试设置它太困难,您可以始终依赖println
debugger:):):@ajb,这是因为当我运行代码时,它给了我x=4,y=6。所以我只是认为这是解决问题的方法。现在我很清楚我真的误解了整件事。但是当我运行代码时,x=4,y=6,然后就像你说的z=12@chr911x
和y
在最后一个语句(分配z
的语句)之前是3和5。最后一条语句将z
设置为12,它还使x
和y
增加1,这样当您执行打印时,它们分别为4和6。是的,x在最后一个操作中为4(x++)。X的值3用于运算,然后X加1。@chr911请参阅我答案的最后一部分。@SalihErikci感谢您的帮助!非常感谢。但是当我运行代码时,x=4,y=6,然后就像你说的z=12@chr911x
和y
在最后一个语句(分配z
的语句)之前是3和5。最后一条语句将z
设置为12,它还使x
和y
增加1,这样当您执行打印时,它们分别为4和6。是的,x在最后一个操作中为4(x++)。X的值3用于运算,然后X加1。@chr911请参阅我答案的最后一部分。@SalihErikci感谢您的帮助!谢谢,现在我明白了@chr911不客气:)如果您觉得答案有用,请点击勾号,将其标记为已接受答案(也会给您带来一些代表)。@chr911是的,对不起,拼写错误太多了!现在更正。谢谢,现在我明白了@chr911不客气:)如果您觉得答案有用,请点击勾号,将其标记为已接受答案(也会给您带来一些代表)。@chr911是的,对不起,拼写错误太多了!现在更正。谢谢你的提供。谢谢你的提供。