整理一下java笔试题吧(请大家多指教)1------i++,++i

来源:互联网 发布:ubuntu 怎么升级 编辑:程序博客网 时间:2024/05/01 20:41
题1
int i=0;
i=i++;//the value of 'i' is 0

刚学习编程语言的时候只记得i=i++是先赋值后自加,i=++i是先自加后赋值。
i++和++i的运算后 i都会自加为1。

题2
x=x+1,x+=1及x++那个效率高?
解答:
    x=x+1效率最低:
    (1)读取右边x地址;
    (2)x+1;
    (3)读取左边x地址;
    (4)将右边值传递给左边的x        
    x+=1效率次之:
    (1)读取右边x地址;
    (2)x+1;
    (3)将得到的值传递给x
    x++最高
    (1)读取x地址;
    (2)x自增1;
题3
int i=0;
i=i++ + ++i;//i的值为2
解答:执行过程是,先执行i++,右边即为0 + ++i ,此时i=1 再执行++i 即为0+2=2,然后赋值给i。
      一本书上这样描述的:选执行i++,但是i自增1操作是稍后才执行的,所以此时的i还是0,然后执行++i,++i后i的值是1,执行完++i后要补增i++(这个补增是什么意思),所以此时i的值实际上是2,0+2=2,然后赋值给i,最终i的值为2。 
同理可以做做,i=++i + i++ + i++ + i++(1+1+2+3)                                 
原创粉丝点击