[JAVA] 不僅有Java運算符,更有優先級講解,可以說很詳細了

運算符

算術運算符 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中,空格是可以作爲一個有效字符使用的,而空白相對於空格來說要寬泛得多,也可以說空白是由大量的空字符組成的;

完結。老夫雖不正經,但老夫一身的才華

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章