java中i =i++的思考?

    技术2022-05-19  21

    在java中当我们定义

    int i = 0;

    i = i++;

    System.out.println(i);

     

    其结果是0;

     

    首先我们来反汇编一下对应的class文件

     

    javap -c Test

     

    0行iconst_0是将字面值0放到入栈放到的operand stack中,

    1行istore_1是从operand stack出栈将0写到Local variable Area中

    2行iload_1是从local variable读出0的值入栈

    3行iinc是对local variable中的值进行自加

    6行istore_1是将operand stack在2行入栈的值写到1行的local variable中.

    这样就把0再回写过去了.

     

    简单一点理解就是约等于

    int i = 0;

    int t = i;

    i = i + 1;

    i = t;


    最新回复(0)