最近在看一些基础知识,发现自己以前忽略掉了很多东西,而这些东西恰恰是面试笔试中最常考到的
1.i=i+1
这个是最简单,最明了的一个表达式
2.有关于i++和++i的区别
i++和++i都是代表i=i+1的意思;
i++指的是i++所在的语句运行后,i再自增1;
++i指的是++i所在的语句运行前,i先自增1;
其实这个大家都懂,就不在阐述;
同时加一道题目,大家看看
int i=0;
i=++i + i++ + i++ + i++;
结果i等于多少?
首先,“++i” 后此时i= 1;然后第一个“i++” 后,i 依然等于1;但是第二个“i++”的时候,由于第一个“i++”的滞后自增,此时i=2;
到了第三个“i++”的时候,由于第二个滞后自增,此时i=3;所以i=1 + 1 + 2 + 3 = 7
3. i=i++;
如果基础不好的人,很容易和前面的表达式混淆,以为上面表达的意思是i=i++和i=i+1等价,其实差别很大的,
原因是java中有中间缓存变量的机制,所以i=i++等价于:
temp=i;
i=i+1;
i=temp;
所以如果有使用到i的值的时候,其实i的值是不变的
下面给一道面试题
public static void main(String[] args) {
int j =0;
for (int i=0 ; i<100; i++){
j = j++;
//java使用了中间缓存变量
//j= j ++;相当于
//temp = j;
//j = j + 1;
//j = temp;
}
System.out.println(j);
int j =0;
for (int i=0 ; i<100; i++){
j = j++;
//java使用了中间缓存变量
//j= j ++;相当于
//temp = j;
//j = j + 1;
//j = temp;
}
System.out.println(j);
}
其实最后j还是等于0,而不是想象中的100。
希望能帮助到大家。。。