i=i++的过程?

    xiaoxiao2021-03-25  102

    先看一段代码:

    public class HelloB{ public static void main(String[] args) { int i = 0; i = i++; System.out.println(i); } } 输出多少呢?

    答案是0;

    具体过程可以这样理解:

    ①:tmp=i;

    ②:i=i+1;

    ③:i=tmp;

    当然,如果变为i=++i;

    那么结果就为1了。

    有兴趣可以看看字节码,来辅助分析,说实话我暂时也不理解,按分析还是输出1,但编译器说是0那就是0;

    public static void main(java.lang.String[]); descriptor: ([Ljava/lang/String;)V flags: ACC_PUBLIC, ACC_STATIC Code: stack=2, locals=2, args_size=1 0: iconst_0 1: istore_1 2: iload_1 3: iinc 1, 1 6: istore_1 7: getstatic #16 // Field java/lang/System.out:Ljav a/io/PrintStream; 10: iload_1 11: invokevirtual #22 // Method java/io/PrintStream.prin tln:(I)V 14: return

    转载请注明原文地址: https://ju.6miu.com/read-33550.html

    最新回复(0)