1. 请问下面程序最后打印的结果是什么?

博客围绕一个问题展开,答案为0。解释指出初学者若不理解无妨,后续深入学习再回顾。涉及内部运行步骤,用临时变量temp保存自增前值,变量自增后,自增表达式将temp值返回给i,i值不变,还提及通过字节码解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

int i = 0;  
i = i++;   
System.out.println(i); 

答案:0
解释:这道题有点难以理解,初学者如果实在不明白也没关系,等以后学习深入了再回过头来看,这里面涉及到内部的运行步骤:先用一个临时的变量temp保存变量自增前的值,然后变量自增,最后自增表达式会把temp的值作为整个表达式的值返回,也就是把temp的值返回给了i,由于temp保存的是i自增前的值,所以i的值不会变。

通过字节码(编译后的.class文件)的解释:

   Code:
    0: iconst_0 //将常量’0’push入操作数栈(operand stack,与普通栈不同)
    1: istore_1 //将常量’0’存储到栈(注意不是堆,局部变量存储在栈中)
    2: iload_1 //将常量’0’载入到操作数栈
    3: iinc 1, 1 //在栈中将a增1,a从’0’变为’1′
    6: istore_1 //在操作数栈中将常量”重新存储到栈,a从’1’变回’0′
    7: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
    10: iload_1
    11: invokevirtual #3; //Method java/io/PrintStream.println:(I)V
    14: return
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值