例:z=3、x=1、y=2。问z-= --y - x–?
分析:
我们先说一下前自增和后自增、前自减和后自减的区别。
自增(++):将变量的值加1,分前缀式(如++i)和后缀式(如i++)。前缀式是先加1再使用;后缀式是先使用再加1。
自减(–):将变量的值减1,分前缀式(如–i)和后缀式(如i–)。前缀式是先减1再使用;后缀式是先使用再减1。
我们分析一下上面那道题: 由题意可以变形为:z = z - ((–y) -(x–))
根据上面的分析:前缀式和后缀式的区别,这里的–y就是1,x–就是1,我们也就能得出z =3。
例:
public class Test{
public static void main(String[] args){
int j=0;
for (int i = 0; i < 100; i++){
j = j++;
}
System.out.println(j);
}
}
答案:j = 0;
我们分析一下上面的代码,如果这是一段c语言的代码,那这个 j 最终的数值就是100了,但是在java里,java编译器每次遇到自增自减的语句时,就会开辟一块新的内存空间来保存,然后再将这个换成变量的值赋给左边的变量,就像下面的代码:
temp = j;
j = j + 1;
j = temp;
所以最后的答案就是0;
我们再来看一下,如果换成 j = ++j;最后的j会是多少?流程应该如下:
temp = j +1;
j = j + 1;
j = temp;
这时候最后的结果应该就是100了。
例:
public static void main(String [] args){
int i = 0;
int j = i++ + i++; //这条语句等价于j = (i++) + (i++)
System.out.println(“输出i的结果为”+i);
System.out.println(“输出j的结果为”+j);
}
}
输出的结果:
输出i的结果为2
输出j的结果为1
分析:
j = (i++)+ (i++)
i++ 第一次之后 i由0变为1,第二次 i++之后 i由1变为2
而j
右自增,是先使用再增,所以,j= 0 +1 = 1
当初来的梦想就是能凭借技术吃饭,就目前来看,做的极差。
整天混日子的,有点有心无力。
还是,整理下,好好从基础抓起吧。
772


和自减(--)&spm=1001.2101.3001.11974&articleId=104420564&d=1&t=3&u=1008967b6233493a9eed3f3c3ed14722)

被折叠的 条评论
为什么被折叠?



