今天做了一些面试题,发现了自己致命的基础不牢的很多问题。例如下面这一个:
public class Demo{
public static void main(String[] args) {
int count = 0;
int num = 0;
for (int i = 0; i <= 100; i++) {
num = num+i;
count = count++;
//count++;
}
System.out.println(num);//5050
System.out.println(count);//0
System.out.println(num*count);//0
}
}
原本以为输出结果是这样的:num=5050;count=101;num*count=510050;
实际结果如上所示。count=0;
查阅了资料,原来------
java中i++的执行原理,在java中执行i++或者++i都会赋值给临时变量的。这和C语言是不同。在C中是能得到想要的结果。但是在java中是不一样的。
例如:i=j++,可以分为两部执行,第一步:i=j,第二步:j+1,即先赋值再++,
所以count=count++后count始终是零,只不过是第二个count混淆视听了,我们完全可以把它当做另一个不相关的变量。
很明显,如果把代码改成
count++;
结果便是原先想要的的了。