Java複習(1)Java 運算符

Java運算符

Java運算符主要包括以下幾種:

  1. 算術運算符
  2. 賦值運算符
  3. 關係運算符
  4. 邏輯運算符(邏輯運算符針對的是 boolean類型的表達式/值)
  5. 按位運算符(按位運算符針對的是 二進制的數字)
  6. 三元運算符

幾乎所有的操作符都只能操作“基本類型”,例外的操作符是“=” “==” “!=”,他們能操作所有的對象。除此之外,String類支持“+”和“+=”,當String後面緊跟一個“+”,而這個“+”後面又緊跟一個非String類型的元素,編譯器就會嘗試將這個非String轉化爲String

1.算術運算符

算術運算符 包括但不限於 +、-、*、/、%、++、--,分別代表 加 減 乘 除 取餘 加加 減減

其中 前置加加 與 後置加加 的區別 由下面的例子解釋
在這裏插入圖片描述

2.賦值運算符

賦值運算符 包括 =、 +=、 -=、 *=、 /=、 %=

‘=’:賦值操作符意思是將右值賦值給左值,右值可以是任何場數、變量、或者表達式;但是左值必須是一個明確的、已命名的變量。常數不能作爲左值。

對基本類型的複製時很簡單的,基本數據類型存儲了實際的數值,而並非指向一個對象的引用,所以在爲其賦值的時候,是直接將一個地方的內容複製到了另一個地方。例如,對基本數據類型使用a=b,那麼b的內容就複製給a,若接着又修改了a,而b根據不會受這種修改的影響。

對一個對象進行操作時,我們真正操作的是對對象的引用。所以倘若“將一個對象賦值給另一個對象”,實際是將“引用”從一個地方複製到另一個地方

3.關係運算符

關係運算符 包括>、 <、 >=、 <=、 ==、 !=,分別代表大於、小於、大於等於、小於等於、等於、不等於,其中 關係運算符 有個特殊的 instanceof 是用來 比較一個對象是否屬於這個類

關於==與equals的區別?

  • ‘==’ ‘!=’
    可以用於基本數據類型,也可以用於引用數據類型的操作符
    對於基本數據類型,比較的是數值
    對於引用數據類型,比較的是對象的引用(地址)
  • equals
    如果是相比較兩個對象的實際內容是否相同,又該如何操作呢?此時,必須使用所有對象都適用的特殊方法equals(),但這個方法不適用“基本類型”
    注意:equals()的默認行爲是比較引用,所以如果你創建了自己的類,就需要進行方法重寫,以達到目的。
    大多數Java類庫都實行了equals()方法,一遍用來比較對象的內容,而非比較對象的引用。

4.邏輯運算符

符號 名稱 解釋
二元運算符 & 邏輯與 兩個中有一個爲false,整體就爲false;全爲 true,整體才爲 true
二元運算符 | 邏輯或 兩個中有一個爲true,整體就爲 true;全爲 false,整體才爲 false
二元運算符 ^ 邏輯異或 兩個相同整體爲false,不同爲true
一元運算符 ! 邏輯非 非false爲true,非true爲false
二元運算符 && 短路與 與 & 作用相同,但具有短路作用,即如果左邊爲false,後面的表達式就不用考慮了;而 & 是無論左邊是false/true,後面的表達式都會執行
二元運算符 || 短路或 |作用相同,但具有短路作用,即如果左邊爲true,後面的表達式就不用考慮了;而 |是無論左邊是false/true,後面的表達式都會執行

5.按位運算符

位運算符針對的是二進制數字,而計算機存儲數字的時候是按照反碼存儲的,所以最高位保存的是符號位

符號 名稱 解釋
二元運算符 & 按位與 兩個二進制數字之間 若有一個爲0,則爲0
二元運算符 | 按位或 兩個二進制數字之間 若有一個爲1,則爲1
二元運算符 ^ 按位異或 兩個二進制數字相同爲0,不同爲1
一元運算符 ~ 按位非(反碼) 按位取反(高位包括在內
二元運算符 << 左移 格式:m<<n,意思是將數字m的二進制格式向左移n位,其中左邊n位(包括最高位)丟棄,右邊補齊n個0 ,相當於乘2的n次方
二元運算符 >> 右移 格式:m>>n,意思是將數字m的二進制格式向右移n位,其中右邊n位丟棄,左邊補齊,當最高位爲0,則左邊補0;當最高位爲1,則左邊補齊1;相當於除以2的n次方
二元運算符 >>> 無符號右移 格式:m>>n,意思是將數字m的二進制格式向右移n位,其中右邊n位丟棄,左邊補齊n個0

拓展:關於 按位異或
一個數據對另個數據按位異或兩次,該數本身不變,如下圖:
在這裏插入圖片描述

  • 面試題:不需要第三方變量,實現兩個變量的交換
    在這裏插入圖片描述

6.三元運算符

格式:(關係表達式) ? 表達式1 : 表達式2

解釋:當關系表達式爲 true 時,執行 表達式1,否則執行 表達式2

相當於:

if( 關係表達式 ) {
    表達式1;
}else{
    表達式2;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章