美文网首页
count++ Vs. ++count

count++ Vs. ++count

作者: 小船儿爱学习 | 来源:发表于2020-11-08 23:33 被阅读0次

    这是一个很常见的自增对比。我们通常的解释是:
    count++:先赋值,再自增; ++count:先自增,再赋值。
    但是这个“赋值”的词汇很容易造成误解。

    比如这个例子:

    public class Increment {
        public static void main(String[] args) {
            int count = 0;
            for (int i = 0; i < 100; i++) {
                count = count++;
            }
            System.out.println(count);
        }
    }
    

    输出结果为:0。

    字节码执行顺序:


    image.png

    由上图可以看到:
    第10行、iload_1将变量1的值入栈(也就是count的值0)。
    第11行、iinc indexbyte constbyte的含义是将整数值constbyte加到indexbyte指定的int类型的局部变量中(也就是count++操作,此时count变量为1)。
    第14行、istore_1将栈顶元素(此时栈顶元素为0)存入变量1中(变量1为count)。

    总结:可以将count=count++理解为先入栈,再自增,然后将栈顶元素赋值给等号左边的count。

    相关文章

      网友评论

          本文标题:count++ Vs. ++count

          本文链接:https://www.haomeiwen.com/subject/kmykbktx.html