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);
}
}
输出结果为
0
1
i=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);
}
}
输出为
0
1
i++ 有中间缓存变量, i = i++ 等价于
temp = i;
i = i + 1;
i = temp;
所以 i 不变, 依然是0
//Warning: The assignment to variable j has no effect
j = ++j;
j = ++j 相当于 j = j = j + 1
所以编译器警告, 语句的赋值没有作用
总结
++i 没有中间缓存变量, 理论上比 i++ 更加高效