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
單看起來感覺挺簡單的,為了更好的掌握,下面搞了個題目加深下印象
題目
x的值等於4
y的值等於6
遇到++x時 x先加一 再執行
遇到x++時 x的值不變,執行完當前操作後,x的值再加一
x++的時候 x=3
++x 時候 y=3++3 , y=6 ,x=4
題目
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進行窄化轉換,由編譯程序自動執行
閱讀更多 程序員一代碼搬運工 的文章