i++ 和 ++i 都能实现+1, 顺序不同public class TestPlus { public static void main(String[] args) { int i = 0; System.out.println(i++); int j = 0; System.out.println(++j); System.out.println("i=" + i + " j=" + j); }} 输出结果为 01i=1 j=1如上所示: i++ 是执行完后面的语句, 才加1 ++i 就先加1, 才执行后面的语句 i++利用了中间缓存变量如果 i = i++ 会是什么结果呢 public class TestPlus { public static void main(String[] args) { int i = 0; i = i++; System.out.println(i); int j = 0; j = ++j; System.out.println(j); }}输出为 01i++ 有中间缓存变量, i = i++ 等价于 temp = i;i = i + 1;i = temp;所以 i 不变, 依然是0 //Warning: The assignment to variable j has no effectj = ++j;j = ++j 相当于 j = j = j + 1所以编译器警告, 语句的赋值没有作用 总结++i 没有中间缓存变量, 理论上比 i++ 更加高效
|