java基础题

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

                   }


关于这段代码,的输入结果0.请说明你的看法.
我的分析是:
     JVM栈中每次进行运算的时候,都会复制一份值. 为什么这么说列?
     看这句:
    j = j++;
   先将j的值赋给前面的j,再对j进行++操作,
如果在内存中,前面的j和后面的j如果不是分别有自己的内存地址,请问为什么进行++操作以后,j在第下一次循环的时候值仍为0?
===============================解答================
你需要补补汇编相关知识,程序执行不单单在内存,cpu的寄存器才是真正运算的地方,内存可以视为cpu的存储。
j = j + 1的计算过程
从j的内存地址读入寄存器,做+1操作后重新放回内存

j++的问题跟cpu的解释行为有关,如果你上过c课程,比较负责的教材都会强调,不要使用这种容易造成混淆且与编译环境有关的编码方式。
实际来说,j = j++在执行时优先执行j = j并存会内存,然后在寄存器中++,所以才有0的结果。

你可能感兴趣的:(java,jvm,C++,c,J#)