邏輯運(yùn)算符把各個(gè)運(yùn)算的關(guān)系表達(dá)式連接起來(lái)組成一個(gè)復(fù)雜的邏輯表達(dá)式,以判斷程序中的表達(dá)式是否成立,判斷的結(jié)果是 true 或 false。
邏輯運(yùn)算符是對(duì)布爾型變量進(jìn)行運(yùn)算,其結(jié)果也是布爾型,具體如表 1 所示。
?
運(yùn)算符 | 用法 | 含義 | 說(shuō)明 | 實(shí)例 | 結(jié)果 |
---|---|---|---|---|---|
&& | a&&b | 短路與 | ab 全為 true 時(shí),計(jì)算結(jié)果為 true,否則為 false。 | 2>1&&3<4 | true |
|| | a||b | 短路或 | ab 全為 false 時(shí),計(jì)算結(jié)果為 false,否則為 true。 | 2<1||3>4 | false |
! | !a | 邏輯非 | a 為 true 時(shí),值為 false,a 為 false 時(shí),值為 true | !(2>4) | true |
| | a|b | 邏輯或 | ab 全為 false 時(shí),計(jì)算結(jié)果為 false,否則為 true | 1>2|3>5 | false |
& | a&b | 邏輯與 | ab 全為 true?時(shí),計(jì)算結(jié)果為 true,否則為 false | 1<2&3<5 | true |
- && 與 & 區(qū)別:如果 a 為 false,則不計(jì)算 b(因?yàn)椴徽?b 為何值,結(jié)果都為 false)
- || 與 | 區(qū)別:如果 a 為 true,則不計(jì)算 b(因?yàn)椴徽?b 為何值,結(jié)果都為 true)
注意:短路與(&&)和短路或(||)能夠采用最優(yōu)化的計(jì)算方式,從而提高效率。在實(shí)際編程時(shí),應(yīng)該優(yōu)先考慮使用短路與和短路或。
結(jié)果為 boolean 型的變量或表達(dá)式可以通過(guò)邏輯運(yùn)算符結(jié)合成為邏輯表達(dá)式。邏輯運(yùn)算符 &&、|| 和 !按表 2 進(jìn)行邏輯運(yùn)算。
?
a | b | a&&b | a||b | !a |
---|---|---|---|---|
true | true | true | true | false |
false | true | false | true | true |
true | false | false | true | false |
false | false | false | false | true |
邏輯運(yùn)算符的優(yōu)先級(jí)為:!運(yùn)算級(jí)別最高,&& 運(yùn)算高于 || 運(yùn)算。!運(yùn)算符的優(yōu)先級(jí)高于算術(shù)運(yùn)算符,而 && 和 || 運(yùn)算則低于關(guān)系運(yùn)算符。結(jié)合方向是:邏輯非(單目運(yùn)算符)具有右結(jié)合性,邏輯與和邏輯或(雙目運(yùn)算符)具有左結(jié)合性。
下面是一些使用邏輯運(yùn)算符的示例。
- x>0 && x<=100 // 第一行語(yǔ)句
- y%4==0 || y%3==0 // 第二行語(yǔ)句
- !(x>y) // 第三行語(yǔ)句
其中,第一行語(yǔ)句用于判斷 x 的值是否大于 0 且小于或等于 100,只有兩個(gè)條件同時(shí)成立結(jié)果才為真(true)。第二行語(yǔ)句用于判斷 y 的值是否能被 4 或者 3 整除,只要有一個(gè)條件成立,結(jié)果就為真(true)。第三行語(yǔ)句先比較 x 和 y,再將比較結(jié)果取反,即如果 x 大于 y 成立,則結(jié)果為假(false),否則為真(true)。
Java關(guān)系運(yùn)算符
關(guān)系運(yùn)算符(relational operators)也可以稱(chēng)為“比較運(yùn)算符”,用于用來(lái)比較判斷兩個(gè)變量或常量的大小。關(guān)系運(yùn)算符是二元運(yùn)算符,運(yùn)算結(jié)果是 boolean 型。當(dāng)運(yùn)算符對(duì)應(yīng)的關(guān)系成立時(shí),運(yùn)算結(jié)果是 true,否則是 false。
關(guān)系表達(dá)式是由關(guān)系運(yùn)算符連接起來(lái)的表達(dá)式。關(guān)系運(yùn)算符中“關(guān)系”二字的含義是指一個(gè)數(shù)據(jù)與另一個(gè)數(shù)據(jù)之間的關(guān)系,這種關(guān)系只有成立與不成立兩種可能情況,可以用邏輯值來(lái)表示,邏輯上的 true 與 false 用數(shù)字 1 與 0 來(lái)表示。關(guān)系成立時(shí)表達(dá)式的結(jié)果為 true(或 1),否則表達(dá)式的結(jié)果為 false(或 0)。表 1 給出了比較運(yùn)算符的含義及其實(shí)例應(yīng)用。
?
運(yùn)算符 | 含義 | 說(shuō)明 | 實(shí)例 | 結(jié)果 |
---|---|---|---|---|
> | 大于運(yùn)算符 | 只支持左右兩邊操作數(shù)是數(shù)值類(lèi)型。如果前面變量的值大于后面變量的值, 則返回 true。 | 2>3 | false |
>= | 大于或等于運(yùn)算符 | 只支持左右兩邊操作數(shù)是數(shù)值類(lèi)型。如果前面變量的值大于等于后面變量的值, 則返回 true。 | 4>=2 | true |
< | 小于運(yùn)算符 | 只支持左右兩邊操作數(shù)是數(shù)值類(lèi)型。如果前面變量的值小于后面變量的值,則返回 true。 | 2<3 | true |
<= | 小于或等于運(yùn)算符 | 只支持左右兩邊操作數(shù)是數(shù)值類(lèi)型。如果前面變量的值小于等于后面變量的值, 則返回 true。 | 4<=2 | false |
== | 相等運(yùn)算符 | 如果進(jìn)行比較的兩個(gè)操作數(shù)都是數(shù)值類(lèi)型,無(wú)論它們的數(shù)據(jù)類(lèi)型是否相同,只要它們的值相等,也都將返回 true。 如果兩個(gè)操作數(shù)都是引用類(lèi)型,只有當(dāng)兩個(gè)引用變量的類(lèi)型具有父子關(guān)系時(shí)才可以比較,只要兩個(gè)引用指向的不是同一個(gè)對(duì)象就會(huì)返回 true。 Java?也支持兩個(gè) boolean 類(lèi)型的值進(jìn)行比較。 |
4==4 97=='a' 5.0==5 true==false |
true true true false |
!= | 不相等運(yùn)算符 | 如果進(jìn)行比較的兩個(gè)操作數(shù)都是數(shù)值類(lèi)型,無(wú)論它們的數(shù)據(jù)類(lèi)型是否相同,只要它們的值不相等,也都將返回 true。 如果兩個(gè)操作數(shù)都是引用類(lèi)型,只有當(dāng)兩個(gè)引用變量的類(lèi)型具有父子關(guān)系時(shí)才可以比較,只要兩個(gè)引用指向的不是同一個(gè)對(duì)象就會(huì)返回 true。 |
4!=2 | true |
注意點(diǎn)如下所示:
- 基本類(lèi)型的變量、值不能和引用類(lèi)型的變量、值使用 == 進(jìn)行比較;boolean 類(lèi)型的變量、值不能與其他任意類(lèi)型的變量、值使用 == 進(jìn)行比較;如果兩個(gè)引用類(lèi)型之間沒(méi)有父子繼承關(guān)系,那么它們的變量也不能使用 == 進(jìn)行比較。
- == 和 != 可以應(yīng)用于基本數(shù)據(jù)類(lèi)型和引用類(lèi)型。當(dāng)用于引用類(lèi)型比較時(shí),比較的是兩個(gè)引用是否指向同一個(gè)對(duì)象,但當(dāng)時(shí)實(shí)際開(kāi)發(fā)過(guò)程多數(shù)情況下,只是比較對(duì)象的內(nèi)容是否相當(dāng),不需要比較是否為同一個(gè)對(duì)象。
關(guān)系運(yùn)算符的優(yōu)先級(jí)為:>、<、>=、<= 具有相同的優(yōu)先級(jí),并且高于具有相同優(yōu)先級(jí)的 !=、==。關(guān)系運(yùn)算符的優(yōu)先級(jí)高于賦值運(yùn)算符而低于算術(shù)運(yùn)算符,結(jié)合方向是自左向右。
關(guān)系表達(dá)式通常用于 Java 程序的邏輯判斷語(yǔ)句的條件表達(dá)式中。使用關(guān)系表達(dá)式要注意以下幾點(diǎn):
- 運(yùn)算符 >=、==、!=、<= 是兩個(gè)字符構(gòu)成的一個(gè)運(yùn)算符,用空格從中分開(kāi)寫(xiě)就會(huì)產(chǎn)生語(yǔ)法錯(cuò)誤。例如?
x> =y;
?是錯(cuò)誤的,但是可以寫(xiě)成x >= y;
?在運(yùn)算符的兩側(cè)增加空格會(huì)提高可讀性。同樣將運(yùn)算符寫(xiě)反,例如 =>、=<、=! 等形式會(huì)產(chǎn)生語(yǔ)法錯(cuò)誤。 - 由于計(jì)算機(jī)內(nèi)存放的實(shí)數(shù)與實(shí)際的實(shí)數(shù)存在著一定的誤差,如果對(duì)浮點(diǎn)數(shù)進(jìn)行 ==(相等)或 !=(不相等)的比較,容易產(chǎn)生錯(cuò)誤結(jié)果,應(yīng)該盡量避免。
- 不要將“==”寫(xiě)成“=”。
下面是一些使用關(guān)系運(yùn)算符的示例。
- a > b // 比較變量a的值是否大于變量b的值
- x+y> = z // 比較變量x與變量y的和是否大于或等于變量z的值
- width * width+size != area // 比較變量width的平方加上變量size的值是否與變量area的值不相等
- name == "zhht" // 比較變量name的值是否等于字符串nzht
- pass != "123456" // 比較變量pass的值是否不等于字符串“123456”
例 1
編寫(xiě)一個(gè)程序,使用戶(hù)可以從鍵盤(pán)輸入兩個(gè)數(shù),并判斷這兩個(gè)數(shù)之間的大小。 實(shí)現(xiàn)代碼如下:
- public static void main(String[] args) {
- ??? int number1, number2; // 定義變量,保存輸入的兩個(gè)數(shù)
- ??? System.out.print("請(qǐng)輸入第一個(gè)整數(shù)(number1):");
- ??? Scanner input = new Scanner(System.in);
- ??? number1 = input.nextInt(); // 輸入第一個(gè)數(shù)
- ??? System.out.print("請(qǐng)輸入第二個(gè)整數(shù)(number2):");
- ??? input = new Scanner(System.in);
- ??? number2 = input.nextInt(); // 輸入第二個(gè)數(shù)
- ??? System.out.printf("number1=%d,number2=%d\n", number1, number2); // 輸出這兩個(gè)數(shù)
- ??? // 判斷用戶(hù)輸入的兩個(gè)數(shù)是否相等
- ??? if (number1 == number2) {
- ??????? System.out.println("number1 和 number2 相等。");
- ??? }
- ??? // 判斷用戶(hù)輸入的兩個(gè)數(shù)據(jù)是否相等
- ??? if (number1 != number2) {
- ??????? System.out.println("number1 和 number2 不相等。");
- ??????? // 判斷用戶(hù)輸入的數(shù)1是否大于數(shù)2
- ??????? if (number1 > number2) {
- ??????????? System.out.println("number1 大于 number2。");
- ??????? }
- ??????? // 判斷用戶(hù)輸入的數(shù)1是否小于數(shù)2
- ??????? if (number1 < number2) {
- ??????????? System.out.println("number1 小于 number2。");
- ??????? }
- ??? }
- }
保存程序并運(yùn)行,運(yùn)行結(jié)果如下所示:
?
圖 1? 運(yùn)行結(jié)果文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-774981.html
在本程序中,使用 input.nextInt() 接收用戶(hù)從鍵盤(pán)輸入的兩個(gè)數(shù),然后通過(guò)關(guān)系運(yùn)算符來(lái)比較這兩個(gè)數(shù)之間的大小。這里用到了 if 語(yǔ)句,它是一個(gè)流程控制語(yǔ)句,將在后面的章節(jié)中詳細(xì)講解。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-774981.html
到了這里,關(guān)于Java邏輯運(yùn)算符(&&、||和!),Java關(guān)系運(yùn)算符的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!