为什么num= num++;输出结果是0?原因图示详解 简单易懂
作者:互联网
为什么num= num++;输出结果是0?,原因详解
public class Demo{
public static void main (String args[]) {
int num=0;
for (int i=0;i<100;i++) {
num=num++; //运行后警告提示:num++没有被使用过
}
System.out.println("num="+num);
}
}
运行后警告提示:num++没有被使用过
原因:先了解num=num和num++分别在存储空间哪里运行?
main方法执行时,会分配虚拟内存空间——线程–栈
栈 分为多个种类,
对变量赋值时是在局部变量表中进行,操作时是在操作数栈中进行。
而num = num++;因为++在后面,所以先赋值后运算。
然后理解为:
①:num = num; 在 局部变量栈中 操作,相当于 tnum = num;
②:num++; 在 操作数栈中 进行, num++;
③:num 值输出, 这里输出的是局部变量表中的 tnum,和操作数栈中num++无关。
为什么说输出的是局部变量表中的数值?
引入变量j,让j = num++;,这时 j 输出的结果是100,而 j 存储在局部变量表中,所以说明输出的结果是在局部变量表中存储的数值。
package day1;
public class Demo1 {
public static void main(String[] args) {
int j = 0;
for (int i=0;i<100;i++) {
j=num++; //警告提示:num++没有被使用过
}
System.out.println("num="+num);
}
}
标签:输出,++,局部变量,int,num,表中,易懂 来源: https://blog.csdn.net/MS_SONG/article/details/122521858