i++和++i问题输出详解(面试)

i++和++i问题,每次刷面试题都能看到

也有好多人在问

今天就详细的整理下

首先先了解下运算符号的优先级

i++和++i问题输出详解(面试)

i++和++i的区别

(1)i++简单来说就是先用i的值来参加表达式的计算,然后再自加1

i=4;

a=i++; //此时,先做a=i=4,再做i++,故a=4,i=5

(2)++i则是先自增1,再用自加后的值来做运算。

i=4;

a=++i; //此时,先做++i=5,再做a=++1,故a=5,i=5

单看起来感觉挺简单的,为了更好的掌握,下面搞了个题目加深下印象

题目

i++和++i问题输出详解(面试)

x的值等于4

y的值等于6

遇到++x时 x先加一 再执行

遇到x++时 x的值不变,执行完当前操作后,x的值再加一

x++的时候 x=3

++x 时候 y=3++3 , y=6 ,x=4

题目

i++和++i问题输出详解(面试)

static int x,y; 初始化为0

x-- 此时 x的值就为-1了

这个y的值就为 y =0+++0 运算顺序变成 (最后一次不算)

所以y=0,x=1

最后的 x+y+++x

遵循 遇到x++时 x的值不变,执行完当前操作后,x的值再加一

1+0+++1

结果就变成 2了

转换的问题:

short i=1;short i=i+1错的理由

java会自动将小容量的变量进行精度提升,然后再进行运算,得到的结果类型是提升后的大容量的数据类型.如果将该结果赋值给小容量的数据类型的变量,则必须进行强制的类型转换

short i+=1对的理由

s1+=i的方式java会对i进行窄化转换,由编译程序自动执行


分享到:


相關文章: