Java:运算顺序,Post-增量说明
Java: Order of Operations, Post-Increment Clarification
为什么输出是25?
// CODE 1
public class YourClassNameHere {
public static void main(String[] args) {
int x = 8;
System.out.print(x + x++ + x);
}
}
嗨!
我知道上面的代码将打印 25。但是,我想澄清一下 x++ 如何使语句成为 8 + 9 + 8 = 25。
如果我们只这样打印 x++,由于 post 递增,将打印 8 而 x 将在内存中为 9。
// CODE 2
public class YourClassNameHere {
public static void main(String[] args) {
int x = 8;
System.out.print(x++);
}
}
但是为什么代码1最后变成了9呢?
提前感谢您的时间和解释!
这里有一个很好的方法来测试等于25的原因是因为第三个x
等于9.
public class Main {
public static void main(String[] args) {
int x = 8;
System.out.println(printPassThrough(x, "first") + printPassThrough(x++, "second") + printPassThrough(x, "third"));
}
private static int printPassThrough(int x, String name) {
System.out.println(x + " => " + name);
return x;
}
}
结果
8 => first
8 => second
9 => third
25
我认为值得澄清一下:
x++ -> 操作 x ,然后递增 x (意思是 x=x+1)
++x -> 自增x(意思是x=x+1),然后操作x
x-- -> 操作 x ,然后递减 x (意思是 x=x-1)
--x -> 自减x(意思是x=x-1),然后操作x
为什么输出是25?
// CODE 1
public class YourClassNameHere {
public static void main(String[] args) {
int x = 8;
System.out.print(x + x++ + x);
}
}
嗨!
我知道上面的代码将打印 25。但是,我想澄清一下 x++ 如何使语句成为 8 + 9 + 8 = 25。
如果我们只这样打印 x++,由于 post 递增,将打印 8 而 x 将在内存中为 9。
// CODE 2
public class YourClassNameHere {
public static void main(String[] args) {
int x = 8;
System.out.print(x++);
}
}
但是为什么代码1最后变成了9呢?
提前感谢您的时间和解释!
这里有一个很好的方法来测试等于25的原因是因为第三个x
等于9.
public class Main {
public static void main(String[] args) {
int x = 8;
System.out.println(printPassThrough(x, "first") + printPassThrough(x++, "second") + printPassThrough(x, "third"));
}
private static int printPassThrough(int x, String name) {
System.out.println(x + " => " + name);
return x;
}
}
结果
8 => first
8 => second
9 => third
25
我认为值得澄清一下:
x++ -> 操作 x ,然后递增 x (意思是 x=x+1)
++x -> 自增x(意思是x=x+1),然后操作x
x-- -> 操作 x ,然后递减 x (意思是 x=x-1)
--x -> 自减x(意思是x=x-1),然后操作x