算術運算符 Arithmetic operators
加號(+):在操作數值、字符、字符串時其結果各有不同;
- 字符相加得到的是ASCII碼錶值;
- 字符串相加時表示將字符串拼接在一起,得到的是組合後的新字符串;
- 兩個數值相加表示數學中的加法運算;
除號(/):整數在使用除號操作時,得到的結果仍爲整數,小數部分會被直接忽略,而不是四捨五入,但是當整數除以0的時候,會引發算術異常(ArithmeticException)。
Exception in thread "main" java.lang.ArithmeticException: / by zero
- 正無窮大(Infinity):當一個正浮點類型數除以0時,或者正整數除以0.0時;
- 負無窮大(-Infinity):當一個負浮點類型數除以0時,或者負整數除以0.0時;
- NaN(Not a Number):當0.0除以0.0時出現;
需要注意的是:正負無窮大和NaN都屬於double浮點類型,並且所有的正無窮大都是相等的,所有的負無窮大也是相等的,但是NaN永遠不相等,也不等於自己。
取模(求餘數:%):模數的符號忽略不計,結果的正負取決於被取模的數。
++ 和 –:表示所操作的變量自增1和自減1,都只能操作變量,不能操作常量;
- 自增:++,自增操作符,變量值自增1,有前置和後置之分,只能操作變量。
- 自減: – ,自減操作符,變量值自減1,有前置和後置之分,只能操作變量。
自增和自減具體操作是一樣的,增量和減量都是1;比如:代碼 result ++和 ++result,都是將result變量的值在原始值的基礎上增加1,然後賦值給result;代碼 result --和 --result,都是將result變量的值在原始值的基礎上減去1,然後賦值給result。唯一的區別是:
前置(++result): 表示對result增加1之後的結果進行運算;
後置(result++): 表示對result變量值增加1之前的值(原始值)進行運算,然後再對result增加1;
無論是前置還是後置,最後都會對result增加1;如果僅僅執行簡單的遞增操作(只寫result++或++result)比如單行操作,那麼選用任意一個都可以,比如下邊這樣的:
代碼塊
result++;
代碼塊
賦值運算符 Assigning operator
注意Java支持同時給多個變量賦值,好比支持同時聲明多個變量一樣,但因影響代碼可讀性,故也不推薦。
加等於:如:x += 5; 相當於 x = x + 5,但還包括隱式類型轉換。
public static void main(String[] args){
int a, b, c; // 不推薦
a = b = c = 5; // 不推薦
short s = 5;
// s = s + 3; // 編譯出錯,需要強轉 s = (short)(s + 3);
s += 3; // 編譯OK,隱式類型轉換
}
比較運算符 Comparison operator
用於比較兩個變量或常量之間的關係,其結果是boolean類型,其操作格式爲:
boolean result = 表達式A 比較運算符 表達式B;
==:等於,若比較的兩個變量都是數值類型,即使類型不同,只要值相同就OK,就會返回true。
==也可以比較引用數據類型,表示的是操作符兩邊的對象是否是同一對象,比較的是JVM中的內存地址;
instanceof:用於判斷右邊的對象是否是左邊類型的實例;
三元運算符 Ternary operator
三元運算符,表示有三個元素參與的表達式,所以又稱爲三目運算符,其語義表示if-else,語法格式如下:
X ? Y : Z;
其中X爲boolean類型表達式,先計算X的值,若X結果爲true,則返回Y,整個三目運算表達式的結果是Y,否則就是Z。三目運算符結果的類型由Y和Z決定。
可以通過以下的實例驗證:
1.兩個數求最大值/最小值;
int a = 13;
int b = 14;
int maxValue = (a > b) ? a : b ;
2.判斷一個數的是奇數還是偶數;
int i = 13;
String result = (i % 2) == 0 ? "偶數" : "奇數" ;
邏輯運算符 Logical operator
用於操作兩個boolean類型的變量或常量,結果類型也是boolean。語法格式爲:
boolean result = 表達式A 邏輯運算符 表達式B;
&:表示並且,當操作數A和B都爲true時result才爲true,否則就是false。
&&:和&結果相同,具有短路效果,如果左邊操作數A是false,result 一定爲false,且不運行B的運算。
|:表示或者,A和B都爲false時結果爲false,只要有A或B是true,結果就是true。
||:和|結果相同,具有短路效果,如果左邊操作數A是true,result一定爲true,操作數B就不會執行,因爲已經沒有這個必要了。
^:判斷A和B是否不同,不同則爲true,相同則爲false。
!:取反,!true結果是false,!fasle結果是true。
位運算符 Bit operator
位操作是程序設計中按位對二進制數數據的一元和二元操作。詳情如下:
<<:將操作數的二進制碼整體左移指定位數,左移之後的空使用“0”來補充。
>>:將操作數的二進制碼整體右移指定位數,右移之後的空使用“符號位”來補充:
若是正數使用“0”補充;
若是負數使用“1”補充;(操作負數:取反,求補,操作,取反,求補)
>>>:將操作數的二進制碼整體右移指定位數,右移之後的空位使用“0”來補充。
若要交換兩個變量的值,如int a = 3,int b = 5,交換後a 等於5,b等於3,我們可以定義第三方的變量來完成。現在要求使用最快的方式完成,怎麼做?
運算符優先級
在程序設計中有衆多運算符,運算符之間的操作會有先後之分,也稱優先級,詳情如下:
表中的優先級1 – 14,優先級依次從高到低,同一級按表中從右到左,或者從左到右的順序執行。
Java語言分隔符
- 分號(;):語句的分割,表示一個代碼語句結束;
- 花括號({}):表示一個代碼塊,是一個整體,花括號要成對使用;在面向對象的理念中,代碼塊通常表示一個或者多個業務邏輯;
- 方括號([]):通常是定義數組和訪問數組元素時使用;
- 圓括號(()):使用很廣泛,如數據類型轉換、數據運算、方法的定義和使用等;
- 圓點(.):類和對象訪問它的成員時使用,如:Arrays.sort();
- 空格( ):把一整個代碼語句語句分割成幾段,空格的使用次數不限,和英語中單詞之間要使用空格是一樣的。
運算符使用需要注意
1.以上分隔符都必須都是半角下的英文符號;
2.要注意區分空格和空白,空格對應的是鍵盤上的空格鍵的輸入,在Java中,空格是可以作爲一個有效字符使用的,而空白相對於空格來說要寬泛得多,也可以說空白是由大量的空字符組成的;
完結。老夫雖不正經,但老夫一身的才華