【大資料知識】Java運算子詳解
Java運算的封閉性就是補碼運算的封閉性(比如int型別的值最終運算結果也是int型別),Java運算的規則如下:
1、同種型別參與運算(可能需要自動型別轉換)。
2、返回同種型別(可能發生:上溢位和下溢位)。
3、byte,short,char三種類型在Java中是表象(假的),底部都是按照int運算的。
需要注意的是,如下圖所示:
整數的除法是整除
在做除法運算的時候,容易出現下溢位(小數位丟掉了)。
如圖所示,除以2相當於移位運算(移動小數點):
int c=4/2;
當整數除法時,會出現下溢位現象,如圖所示:
此外,如下會出錯,因為“byte變數”和“short變數”都要以int型別運算:
需要做強制型別轉換,如下所示:
此外,舉些例子如下,道理相同:
Java中字面量的運算被Javac優化了,優化為一個固定的常量。
Java中還有一個規則:字面量運算編譯時要做優化。
什麼是字面量?如下所示:
注:7沒有超過byte的取值範圍(-128~127),所以可以直接賦值。
%計算除法的餘數
“%”表示取餘運算,如下所示:
需要注意的是:
1、0對其他數的餘數是0
2、n%3是周期函式,函式值[0,3]
3、負數的餘數是負數
自增自減運算子:++-就是可以將當前變數自我增加(減少)1的運算子。
1、i++,後++,先將i的值作為整個表達的值作為整個表達的值,然後將i增加1.
2、++i,先++,後將i增加1,然後將i的值作為整個表達的值。
i++的表示式,共3步:
有一道經典面試題,如下所示: