在最底層,Java中的資料是通過使用操作符來操作的。
1.操作符
- 用於運算元,接受一個或多個引數,並生成一個新值.
- 副作用:操作符可能會改變運算元自身的值.
- 能改變其運算元的操作符,最普遍的用途是用來產生副作用.
- 使用有副作用的操作符和沒有副作用的操作符,生成的值沒有什麼區別.
2.優先順序
- 決定計算順序.
3.賦值
- “=”:將右邊的值附給左邊的變數.
- 別名現象:是Java操作物件的一種基本方式.(物件傳遞的是引用,出現不同的名字)
4.算術操作符
- “+”, “-“, “*”, “/”, “%”(向下取整)
- 一元加減號:編譯器自動識別,規範加括號.(eg:x = a*(-b))
- 一元減號:改變資料的符號.
- 一元加號:與一元減號對應,將較小型別的運算元提升為int.
5.自增,自減
- “i++”,”++i”,”i–“,”–i”
- 除涉及賦值的操作符以外,唯一具有”副作用”的操作符.
- 字首:先執行運算,在生成值.
- 字尾:先生成值,在執行運算.
6.關係操作符
- “>”, “<“, “>=”, “<=”, “==”, “!=”
- 返回true/false
- equals :預設比較引用,重寫比較內容,不適合用於基本型別.
- ==:比較引用.
7.邏輯操作符
- “&&”, “||”, “!”
- 短路(潛在的效能提升).
8.直接常量
- “0x?”(十六進位制),”0?”(十進位制),”?l/L”(浮點型),”?d/D”(雙精度型)
- 指數記數:e 代表 “10的冪次”.
9.按位操作符
- “&”, “|”, “~”, “^”
- 可與”=”聯合使用.
10.移位操作符
- “<<“(左移,低位補0), “>>”(有符號右移,高位正插0,負插1), “>>>”(無符號右移,高位插0)
- 只可用來處理整數型別.
- 可與”=”聯合使用.
11.三元運算子
- boolean-exp ? value0 : value1;
12.字串操作符
- “+”, “+=”.
- String 過載了 “+”,”+=”.
- 操作符過載:java不能實現自己的過載操作符.
- 如果表示式以一個字串起頭,那麼後續所有運算元都必須是字串型別(編譯器會把雙引號內的字元序列自動轉成字串).
13.型別轉換操作符
- 型別轉換:(cast).
- 向上轉型:強制型別轉換.
- 向下轉型:不必顯示地進行轉換.
- 截尾:向下取整.
- 舍入:Math.round(),四捨五入.
- 對基本資料型別進行執行算術運算或按位運算,只要型別比int小,在運算之前,會自動轉換成int,最終結果就是int型,如果要把結果賦值給較小的型別,就必須使用型別轉換.
14.sizeof
- sizeof()操作符:返回資料分配的位元組數.
- Java不需要sizeof,因為所有型別在所有機器中的大小是相同的.
END