Java_自增变量

理解局部变量表和操作数栈对理解自增运算很有帮助

要点:

  1. 赋值= 最后运算
  2. =右边从左到右一次加载值压入操作数栈(z这一操作其实可以理解为将符号引用转换成直接引用,不涉及其他算术运算符的具体运算,除了自增运算会直接更新局部变量表,不经过操作数栈)
  3. 现在=右边是只有操作数和运算符形式的算式,具体先算哪个,看算术运算符优先级
  4. 最终赋值之前,临时计算结果也储存在操作数栈中

举例:

public class Test{
	public static void main(String[] args){
		int i=10;
		/*
		*首先将i=10压入操作书栈,然后自增,局部变量表中i=11,
		*然后将操作数栈中的10再赋值给i,所以i=10;
		*/
		i=i++;
		/*
		*首先将i=10压入操作数栈,然后自增,局部变量表中i=11,
		*然后将操作数栈中的10赋值给j,j=10;
		*/
		int j=i++;
		/*
		*首先将第一个i=11压入操作数栈
		*然后第二个i是++i,先自增,局部变量表中的i=12,再将12压入操作数栈
		*第三个i是i++,先将12压入操作数栈,然后自增,局部变量表中i=13
		*然后计算k=11+12*12=155
		*所以i=13,j=10,k=155;
		*/
		int k=i+ ++i*i++;
		System.out.println(i);
		System.out.println(j);
		System.out.println(k);
	}
}

朴实无华的分割框,下面是以前内容,上面时精辟内容

其实很简单,记住要点就可以了
i++,i先进行操作或运算后,自增1
++i,i先自增1,再进行操作或运算
举例:

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

上面这个例子输出为0
解释:i++,i先进行操作,本例中的操作就是输出了,所以先输出0,然后i自增1.

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

上面这个例子,输出为1
解释:++i先自增,变为1,再进行操作也就是输出了,所以输出1.

朴实无华的分割框,下面是以前内容,上面时精辟内容

/**
 * 
* <p>Title: 算术运算符++ -- 一道题搞清楚</p>
* <p>Description: 原则:
* 	++ 在前面时,先让a自增,再参与运算或者输出
    ++ 在后面时,先让a参与运算或者输出,再自增
           从左往右计算,遇到括号先算括号里的
* </p>
* @author Chill Lyn
* @date 2019年9月21日
 */
public class test {
	public static void main(String[] args) {
		int a = 10;
		int b = 9;
		int c = 8;
		int d = 7;
		int result = 0;
		result = a-- + ++c - b-- + d++ - (--a - d++) - b++ - --c;
		/*
		 * a--+ ++c=10+9=19 a=9 b=9 c=9 d=7;
		 * result=19-b--+d++- (--a-d++)-b++- --c;
		 * 19-b--+d++=19-9+7=17 a=9 b=8 c=9 d=8;
		 * result=17- (--a-d++)-b++- --c;
		 * 17-(--a-d++)=17-(8-8)=17 a=8 b=8 c=9 d=9;
		 * result=17-b++- --c=17-8-8=1;
		 * a=8 b=9
		 * c=8 d=9
		 */
		System.out.println(result);
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
		System.out.println(d);
	}
}

console:
1
8
9
8
9

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值