日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 布尔逻辑运算符_Java运算符

發布時間:2024/9/27 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 布尔逻辑运算符_Java运算符 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java語言提供許多操作符。操作符是特殊的符號(symbol),它對一個或者兩個、三個的操作數進行運算,然后返回一個結果,最簡單的就像我們一年級學到的+ -號。一般地,可以將運算符分為四大類:算數運算符、位運算符、關系運算符、邏輯運算符。下面詳細介紹:

內容大概包括:

賦值運算符

算數運算符

位運算符

關系運算符

布爾邏輯運算符

幾個特殊運算符

運算符優先級

1. 賦值運算符

賦值運算符(=)是最常見的了,它將右邊的值賦給左邊,它的運算優先級是最低的。除了我們最熟悉的=以外,還有復合賦值+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=、>>>=。這些賦值語句優先級一樣,都是最低的。可以使用下面形式的賦值語句:

int x = 10,z;

int y = z = x + 1;

相當于z = x +1; y = z; 。

i = (j = k +1)/2;也是可以的,相當于 j = k +1; i = j/2; 你可能還經常遇到一種情況,要在測試條件中計算某個值,并且還要保存這個值以便繼續使用。如下:

double x;

if ( (x = Math.random()) < 0.5 ) {

System.out.println(x);

}

2. 算術運算符

算數運算符用于數學運算,其操作數必須是數值類型(包括char類型),不能對boolean進行算數運算。算數運算符如下表所示:

2.1 基本運算

一元加號簡單地返回操作數本身的值,一元減號取反。加減乘除需要注意的就是除法,對于整數類型,除法不保留小數部分。+也可以用于字符串連接。求模返回除法操作的余數,可用于整數也可以用于浮點數。

2.2 算數與賦值復合運算(compound operator)

+=運算符先進行加法,然后賦值,比如 a += 2; 相當于 a = a + 2; 其他的完全類似。通用格式如下:

var op= expression; 相當于 var = var + expression;

符合運算除了輸入更簡單方便外,虛擬機執行復合賦值操作的效率也更高。

2.3 自增與自減

自增運算將操作數加1,自減運算將操作數減1。例如x = x + 1; 除了可以寫成 x += 1;以外,還可以更簡單地寫成x++;類似地x = x-1;可以寫成x--。自增和自減都有兩種形式,前綴和后綴。對于前綴形式,操作數先自增(自減),然后使用自增(自減)之后的值;后綴則先使用操作數原來的值,然后再自增(自減)。一個簡單的例子:

x = 10;

y = ++x; // y = 11;

y = x++ ;? // y =10;

看一個復雜一點的:

public class IncrementTest {

public static void main(String[] args) {

int i = 0, j;

i = i++;

System.out.println("i = " + i);

j = i++ + i;

System.out.println("i = " + i + ", j = " + j);

}

}

首先,對于i = i++; 首先提取i原來的值(0),然后i自增,此時i=1;到此完成了后綴形式的自增。接著執行賦值語句,此時使用的i是最初提取出來的0,所以將0賦給i,覆蓋掉自增后的1.結果i為0;

對于 j = i++ + 1; 首先提取i的初值0,然后自增后i為1.接著運算加法,復制給j,得到j=1;i=1;

3、位運算符

Java中定義了幾個位運算符,可以用于byte short char int long。位運算符列在下表中:

可以看到,除了按位取反外,其他都都有賦值復合操作。

Java采用的是two's-complement進行編碼。對于負數,采用“取反加1”原則可以得到它的二進制表示。

取反操作很簡單,將整數的二進制形式按位取反,0-->1, 1-->0.

按位與、或、異或也都很簡單明了,重要的是弄明白整數的二進制表示(bit pattern)。

左移:

將所有為向左移動指定的位數,每次移動,高階位(最左邊)被移出,右邊的位用0補充。這可能會導致位的丟失。而對于byte和short,Java在左移之前就自動提升為int,所以如果不超過31位,不會丟失。每次左移相當于乘以2.但是如果將二進制1移進高階位(31或63),結果會變為負數。

右移:

右移將整數的二進制形式向右移動指定的位數。最左邊的位可能會被移出,對于>>右移,高階位使用右移之前的高階位填充,這稱為符號擴展。每次執行>>相當于除以2并丟掉所有余數,用這種方式實現除法更高效,但是要確保不會將任何位移出右端。

對于>>>,最高位不是采用原來的最高位填充,它總是用0填充,稱為無符號右移。

復合類型的位操作符跟算數運算符完全類似,不再說明。

4. 關系運算符

關系運算符包括 ==、!=、>、>=、

關系運算的結果是boolean類型。對于Java任何類型(包括基本類型和引用類型),都可以使用==和!=進行相等性測試。其他的四個關系運算法只適用于數值類型(包括char)。

5.布爾邏輯運算符

下表中的布爾邏輯運算符只能對boolean類型的操作數進行操作:

很明了,不需要解釋。對于短路與、或。意思是如果第一個布爾值就能確定最終結果,后面的結果就無需再計算。例如,對于邏輯與,如果第一個操作數為false,那么結果肯定為false,無需計算右邊的。下面是一個有趣的例子:

if(denom != 0 && num/denom > 10)

如果denom為0,那么第一個表達式為false,后面不需要再計算,所以也就不會出現除數為0的異常。一個類似的例子:

if(car!=null && car.isSomething())

假設其中的isSomething返回布爾類型,這個也保證當car為null的時候不會進行空指針操作。

三元運算符結構為 expression ? expression1 : expression2? 其中expression必須為boolean類型,如果它為true,執行expression1,否則expression2.相當于一個if else。

6. 特殊運算符

除了上面的三元運算符比較特殊以外,還有類型轉換運算符(),instanceof運算符。

強制類型轉換我們已經很熟悉了,instanceof運算符用于判斷某個對象是否是某個類型的實例。例如,在實現Comparable接口中的compareTo方法時,經常要使用instanceof,下面是一個實現:

public int compareTo(Object o) {

if (o instanceof Comp) {

Comp c = (Comp)o;

// do compare

}

return 0;

}

測試之后進行轉換,更能確保類型安全。實現Object的equals方法中也經常用到這個。

()也可以當做一個操作符。

7. 運算優先級

各運算符優先級總結如下表:

說實話很難記住這些順序,一個好的原則是如果不確定執行順序的時候,根據需要加上(),可以使得代碼更加清晰,降低模糊性。而且使用圓括號不會降低程序性能。

總結

以上是生活随笔為你收集整理的java 布尔逻辑运算符_Java运算符的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。