java中的&和&&的區別:1、&&運算子在運算時當第一個表達式的值為false時,就不會再計算第二個表達式;而&運算子則不管第一個表達式的值是否為真都會執行兩個表達式。 2、&運算子可以用作位元運算符,而&&運算子不可以。
本教學操作環境:windows7系統、java8版、DELL G3電腦。
在Java中&&和&都是表示"與"的邏輯運算符,也就是and的意思。它們都是當兩邊的表達式都為true的時候,整個運算結果才會為true,否則為false。接下來在文章中將為大家具體介紹這兩者之間的差異。
&和&&的差別
&和&&都是邏輯運算符,但&&又叫短路運算子。因為當第一個表達式的值為false的時候,則不會再計算第二個表達式;
而&則不管第一個表達式是否為真都會執行兩個表達式。另外&還可以用作位元運算符,當&兩邊的表達式不是Boolean類型的時候,&表示位元運算符。
&& 運算
int i = 0; if(i == 3 && ++i > 0 ) { } System.out.println("i = " + i);
結果是:
i = 0
原因:第二個表達式沒有執行
& 操作
int i = 0; if(i == 3 & ++i > 0 ) { } System.out.println("i = " + i);
結果是:
i = 1
第二個表達式執行了
##擴展知識:邏輯運算子
邏輯運算子把各個運算的關係式連結起來組成一個複雜的邏輯表達式,以判斷程式中的表達式是否成立,判斷的結果是true 或false。 邏輯運算子是對布林型變數進行運算,其結果也是布林型,具體如表 1 所示。用法 | |||||
---|---|---|---|---|---|
說明 | |||||
結果 | #&& | a&&b | #短路與 | ab 全為true 時,計算結果為true,否則為false。 | |
false | #! | ##!a##邏輯非 | a 為true 時,值為false,a 為false 時,值為true | !(2>4) | |
#| | a|b | 邏輯或 | ab 全為false 時,計算結果為false,否則為true | 1>2| 3>5 |
|| 與| 區別:如果a 為true,則不計算b(因為不論b 為何值,結果皆為true) | 注意:短路與(&&)和短路或(||)能夠採用最優化的計算方式,進而提高效率。在實際編程時,應優先考慮使用短路與和短路或。 | 結果為 boolean 型的變數或表達式可以透過邏輯運算子結合成為邏輯表達式。邏輯運算子 &&、|| 和 !按表 2 進行邏輯運算。 | ||
---|---|---|---|---|
表2 用邏輯運算子進行邏輯運算 | a | b | a&&b | |
!a | true | true | true | |
false | false | true | false | |
true | #true | false | false |
逻辑运算符的优先级为:!运算级别最高,&& 运算高于 || 运算。!运算符的优先级高于算术运算符,而 && 和 || 运算则低于关系运算符。结合方向是:逻辑非(单目运算符)具有右结合性,逻辑与和逻辑或(双目运算符)具有左结合性。
下面是一些使用逻辑运算符的示例。
x>0 && x<=100 // 第一行语句 y%4==0 || y%3==0 // 第二行语句 !(x>y) // 第三行语句
其中,第一行语句用于判断 x 的值是否大于 0 且小于或等于 100,只有两个条件同时成立结果才为真(true)。第二行语句用于判断 y 的值是否能被 4 或者 3 整除,只要有一个条件成立,结果就为真(true)。第三行语句先比较 x 和 y,再将比较结果取反,即如果 x 大于 y 成立,则结果为假(false),否则为真(true)。
更多编程相关知识,请访问:编程教学!!
以上是java中的&和&&有什麼差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!