A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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);    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

输出结果为

01i=1 j=1
  • 1
  • 2
  • 3
  • 4

如上所示:

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);    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

输出为

01
  • 1
  • 2

i++ 有中间缓存变量, i = i++ 等价于

temp = i;i = i + 1;i = temp;
  • 1
  • 2
  • 3

所以 i 不变, 依然是0


//Warning: The assignment to variable j has no effectj = ++j;
  • 1
  • 2
j = ++j 相当于 j = j = j + 1
  • 1

所以编译器警告, 语句的赋值没有作用

总结

++i 没有中间缓存变量, 理论上比 i++ 更加高效


1 个回复

倒序浏览
奈斯
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马