为什么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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。