i++ & ++i 哪个效率高?

结论

  • 效率一样!

原因

  • 2个for循环中的代码,编译成字节码完全一样,故for循环中的i++和++i效率一样;
public class SelfAdd {
    
    public static void main(String[] args) {
        f3();
        f4();
    }

    /**
    public static void f1();
    descriptor: ()V
    flags: ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=0
         0: iconst_0
         1: istore_0
         2: goto          15
         5: getstatic     #19                 // Field java/lang/System.out:Ljava/io/PrintStream;
         8: iload_0
         9: invokevirtual #25                 // Method java/io/PrintStream.println:(I)V
        12: iinc          0, 1
        15: iload_0
        16: bipush        10
        18: if_icmplt     5
        21: return
     * */
    public static void f1() {
        for(int i=0;i<10;i++) {
            System.out.println(i);
        }
    }

    /**
    public static void f2();
    descriptor: ()V
    flags: ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=0
         0: iconst_0
         1: istore_0
         2: goto          15
         5: getstatic     #19                 // Field java/lang/System.out:Ljava/io/PrintStream;
         8: iload_0
         9: invokevirtual #25                 // Method java/io/PrintStream.println:(I)V
        12: iinc          0, 1
        15: iload_0
        16: bipush        10
        18: if_icmplt     5
        21: return
     * */
    public static void f2() {
        for(int i=0;i<10;++i) {
            System.out.println(i);
        }
    }

    /**
    public static void f3();
    descriptor: ()V
    flags: ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=0
         0: iconst_0
         1: istore_0
         2: iload_0
         3: iinc          0, 1
         6: istore_1
         7: getstatic     #19                 // Field java/lang/System.out:Ljava/io/PrintStream;
        10: iload_1
        11: invokevirtual #25                 // Method java/io/PrintStream.println:(I)V
        14: return
     * */
    public static void f3() {
        int i=0;
        int j = i++;
        System.out.println(j);
    }

    /**
    public static void f4();
    descriptor: ()V
    flags: ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=0
         0: iconst_0
         1: istore_0
         2: iinc          0, 1
         5: iload_0
         6: istore_1
         7: getstatic     #19                 // Field java/lang/System.out:Ljava/io/PrintStream;
        10: iload_1
        11: invokevirtual #25                 // Method java/io/PrintStream.println:(I)V
        14: return 
     * */
    public static void f4() {
        int i=0;
        int j = ++i;
        System.out.println(j);
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值