直接看题
j = i++;
int i = 0;
int j = i++;
System.out.println(j);
//输出结果为0;
//i=1;
用堆栈来讲这个问题可能会牵扯很复杂,总是弄不清,在网上看到的一个对上面过程的通俗讲解:
Java在执行变量=i++; 在执行变量赋值语句(不是常量赋值,而是例如:i= a;即赋值符号后面有变量)之前,会把i的值先找个地方保存起来,然后直接在i变量的空间内对值+1(保存是为了备用),然后再把刚才保存起来的那个值赋给变量j。
y = x++ + ++x;
int x = 2;
int y = 0;
//后四行可理解为 int y = x++ + ++x;的拆分
int a = x++;
System.out.println(a);
int b = ++x;
System.out.println(b);
y = a + b;
System.out.println(x);
System.out.println(y);
首先根据上面讲解,根据运算符规则,先计算++,再计算+,先看x++,此处x先计算再++,先将x找个地方保存,此时x用x = 2;参与计算,但备用的x已经完成加1变为3,后面++x,先加1,再计算,x再从三变为4,用4来参与计算,此时,y = 2 + 4 = 6;x = 4;
后面的就不一一解释了,我也可能解释不出来,哈哈。如有更好的方案,欢迎推荐。
System.out.println(x++);和a = x++;
++x和x++无论是a = x++;还是System.out.println(x++);均先输出x的值,再进行x++。
例:
int x = 2;
int a = x++;
System.out.println(a);
//输出结果为2;
//x = 3;
int x = 5;
System.out.println(x++);
//输出结果为5;
//x = 6;
i++!=5
int i = 4;
while(i++!=5){
System.out.println(i);
}
System.out.println(i);
//结果为5和6,只有两个结果
if(x–<5){ } else { }
int x = 5;
if(x--<5){
System.out.println(x);
}else{
System.out.println(x++);
}
这个例子牵扯到运算符优先级,x- -优先级大于<,先看x- -,x- -是后减,故再看x<5,不成立,故执行else后面的语句,x变为4.此时x++先运算再加一,故输出x的值为4,但实际x又加一变为5。
运算符优先级参考:https://blog.csdn.net/qq_40690077/article/details/97612453
引用转载请注明出处:
https://blog.csdn.net/qq_40690077/article/details/97922117