关于Java中的a=a++;

本文详细解释了Java中a=a++和a=++a的区别,重点在于它们的运算顺序:前者先计算再自增,后者先自增后计算。通过实例和原理解析,揭示了在for循环中的特殊现象:a=a++会导致结果为初始值而非自增后的值。

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

关于Java中的a=a++

笔记,仅作参考

关于java中的++,先举几个例子

1、 ++在后

	int a=1;
 	int b=a++;
 	System.out.println(b);//b==1
	System.out.println(a);//a==2

​ ++在后,先计算,再自增

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

​ 2、++在前,应该先自加,此时++i是1,那后面的+i,就应该是1,所以1+1赋值给i,所以最后i=2

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

​ 3、++在后,应该先参与运算,它的首先运算是+i,所以0+0,然后i再自增操作,变成了1,再赋值给它本身,所以这个i是1

最后给出特殊的一个也就是标题中的a=a++;
public static void main(String[] args) {
		int a=1;
		for(int i=0;i<100;i++) {
			a=a++;
		}
		System.out.println(a);  //运行结果是1,如果换成a=a--,结果也是一样,如果是a+=1或a=a+1,那结果就是101
	}

这个点很特殊,它不是我们想象中的a赋值给它自身然后再自加1,具体原理以后再说,现在只需要记住就行,百度了一下,得出这个答案:

a = a++与a = ++a均为先计算后赋值,不同的是:
a = a++中变量先压栈,后计算,最后栈顶元素弹出赋值于a;
a = ++a中变量先计算,后压栈,最后栈顶元素弹出赋值于a。

​ 具体原理和JVM机制有关,有兴趣的朋友可以去看看下面两篇博客

​ https://blog.youkuaiyun.com/hudashi/article/details/7062675

​ https://blog.youkuaiyun.com/hudashi/article/details/7062781

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值