一、運算符的優先級
運算符按照優先級別的高低排序分別是:自加/減運算符、 算術運算符、比較運算符、邏輯運算符、賦值運算符。具體請參考下表:
| 順序 |
運算符 |
| 1. |
括號,如 ( ) 和 [ ] |
| 2. |
一元運算符,如 -、++、- -和 ! |
| 3. |
算術運算符,如 *、/、%、+ 和 - |
| 4. |
關系運算符,如 >、>=、<、<=、== 和 != |
| 5. |
邏輯運算符,如 &、^、|、&&、|| |
| 6. |
條件運算符和賦值運算符,如 ? :、=、*=、/=、+= 和 -= |
下面這個例子:
int i=1,j=2; int a=i+++j+++i++; System.out.println(a);
看着就讓人頭暈了,我們可以修改以下這樣。
int a=(i++)+(j++)+(i++);
二、類型轉換
java有兩種類型的轉換,分別是自動類型轉換和強制類型轉換。
1、自動類型轉換
一般而言,java編譯器還是比較智能的,對不同數據類型的參數,會自動轉換類型,為了不至於數據的丟失,一般是較窄的數據類型轉換為較寬的數據類型。也就是說如果一個short類型和一個int類型相加,那么結果就會自動轉換為int類型,因為int比short數位要寬,再有如果int類型和float類型相加,那么結果是float類型,因為浮點型比整型所能表示的數據要寬。另外我們也可以把一個較窄的數據類型直接賦值給一個較寬的數據類型。總結一下,在賦值或者計算時,只要滿足以下條件,就會發生自動類型轉換:
(1)兩種類型兼容;
(2)目標類型大於源類型;
例如:
(1)byte、char和 short 型值可提升為 int 型。如果一個操作數為 long 型,則整個表達式結果為 long 型
(2)如果一個操作數為 float 型,則整個表達式結果為 float 型。而如果一個操作數為 double 型,則整個表達式結果為 double 型
2、 強制類型轉換
強制轉換用於顯式類型轉換。但是強制類型轉換需要小心使用,因為如果被轉換的值的數據類型大於其目標類型,就會丟失部分信息。類型強制轉換使程序將變量視為某種類型,盡管此變量中包含的是另一類型的數據,其具體格式如下:
(類型名)表達式
float a = 346.756565f; int b = (int) a + 10; // 將 c 轉換為整型 System.out.println(b);
最后的結果是356,浮點型a后面的所有的小數都會丟失。
