有关于i++,i=i++等符号的笔记

最近在看一些基础知识,发现自己以前忽略掉了很多东西,而这些东西恰恰是面试笔试中最常考到的

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);

    } 

其实最后j还是等于0,而不是想象中的100。

希望能帮助到大家。。。 

posted @ 2015-01-14 13:57  墨迹修  阅读(2210)  评论(0编辑  收藏  举报