今天偶然看到了一段代码
int j=0;
for(int i=0;i<5;i++){
j=j++;
}
System.out.println(j);
这个结果输出是0;
我对此很纳闷,按照我的理解是j++应该是先赋值,然后j再做运算,但是在循环体中,j的结果也应该是变得。
后来看了一遍文章了解到,这是涉及到jvm存储区的知识,即有堆栈区和变量区,意思就是 j=j++这条语句,先是将j的原始数据放入堆栈区,然后在变量区对j进行自增运算,最后将堆栈区的值再赋予j,即j为0;
而对于++j,则是先运算再赋值,即先在变量区进行运算,随后将值赋予到堆栈区,最后从堆栈区中取值。
这也是看到一篇文章才明白的。
原地址:https://blog.csdn.net/weixin_37672169/article/details/79409216
我认为的j++和++j
最新推荐文章于 2023-09-08 14:28:56 发布