关于Java中++、--运算符的问题

先贴上一段代码,大家想想输出结果:

public class MyMain {
	public static void main(String[] args) {
		int i = 100;
		i = i++;        //代码1
		System.out.println(i);
	}
}



控制台输出结果是:100


    相信你想要的输出结果是101,当初自己的也是深信输出的是101,尼玛为什么这么神奇?当程序执行到代码1时,如果你认为 i++是先将i的值参与运算,然后才自增1的话,那么这种想法就错了,自己过去也一直是以这种思维去思考(先赋值,后自增),也一直没有发现错误,因为过去一直都是运行这样的语句:j = i++;后来直到遇到了i = i + 1这样的语句,才发现对于代码1,“先赋值,后自增”的描述是片面的。

    代码1的关键在于i++的原理,在后置i++运算中,程序会首先保留i在执行自增之前的值x,然后将i的值自增1,而用来参与运算的值,是i在执行自增之前的值x。因此,i = i++的过程可以看似如下过程:

int temp = i;    //程序保留i自增前的值
i = i + 1;        //i自增
i = temp;          //将自增前的值赋值给i

嗯,就酱紫。

注:++、--运算符的优先级要比=高。



转载于:https://my.oschina.net/zing32/blog/366316

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值