關係運算符
關係運算符(relational operators)也可以稱爲“比較運算符”,用於用來比較判斷兩個變量或常量的大小。
關係運算符是二元運算符,運算結果是 boolean 型。當運算符對應的關係成立時,運算結果是 true,否則是 false。
關係表達式是由關係運算符連接起來的表達式。
關係運算符中“關係”二字的含義是指一個數據與另一個數據之間的關係,這種關係只有成立與不成立兩種可能情況,可以用邏輯值來表示,邏輯上的 true 與 false 用數字 1 與 0 來表示。關係成立時表達式的結果爲 true(或 1),否則表達式的結果爲 false(或 0)。
運算符 | 含義 | 說明 | 實例 | 結果 |
---|---|---|---|---|
> | 大於運算符 | 只支持左右兩邊操作數是數值類型。如果前面變量的值大於後面變量的值, 則返回 true。 | 2>3 | false |
>= | 大於或等於運算符 | 只支持左右兩邊操作數是數值類型。如果前面變量的值大於等於後面變量的值, 則返回 true。 | 4>=2 | true |
< | 小於運算符 | 只支持左右兩邊操作數是數值類型。如果前面變量的值小於後面變量的值,則返回 true。 | 2<3 | true |
<= | 小於或等於運算符 | 只支持左右兩邊操作數是數值類型。如果前面變量的值小於等於後面變量的值, 則返回 true。 | 4<=2 | false |
== | 相等運算符 | 如果進行比較的兩個操作數都是數值類型,無論它們的數據類型是否相同,只要它們的值相等,也都將返回 true。如果兩個操作數都是引用類型,只有當兩個引用變量的類型具有父子關係時纔可以比較,只要兩個引用指向的不是同一個對象就會返回 true。Java也支持兩個 boolean 類型的值進行比較。 | 4==4 | true |
!= | 不相等運算符 | 如果進行比較的兩個操作數都是數值類型,無論它們的數據類型是否相同,只要它們的值不相等,也都將返回 true。如果兩個操作數都是引用類型,只有當兩個引用變量的類型具有父子關係時纔可以比較,只要兩個引用指向的不是同一個對象就會返回 true。 | 4!=2 | true |
使用實例:
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”
注意點如下所示:
- 基本類型的變量、值不能和引用類型的變量、值使用 == 進行比較;
- boolean 類型的變量、值不能與其他任意類型的變量、值使用 == 進行比較;
- 如果兩個引用類型之間沒有父子繼承關係,那麼它們的變量也不能使用 == 進行比較。
-
== 和 != 可以應用於基本數據類型和引用類型。當用於引用類型比較時,比較的是兩個引用是否指向同一個對象,但當時實際開發過程多數情況下,只是比較對象的內容是否相當,不需要比較是否爲同一個對象。
優先級
關係運算符的優先級爲:>、<、>=、<= 具有相同的優先級,並且高於具有相同優先級的 !=、==。
關係運算符的優先級高於賦值運算符而低於算術運算符,結合方向是自左向右。
用關係表達式要注意以下幾點:
- 運算符 >=、==、!=、<= 是兩個字符構成的一個運算符,用空格從中分開寫就會產生語法錯誤。例如 x> =y; 是錯誤的,但是可以寫成x >= y; 在運算符的兩側增加空格會提高可讀性。同樣將運算符寫反,例如 =>、=<、=! 等形式會產生語法錯誤。
- 由於計算機內存放的實數與實際的實數存在着一定的誤差,如果對浮點數進行 ==(相等)或 !=(不相等)的比較,容易產生錯誤結果,應該儘量避免。
- 不要將“==”寫成“=”。
實例代碼
編寫一個程序,使用戶可以從鍵盤輸入兩個數,並判斷這兩個數之間的大小。 實現代碼如下:
public static void main(String[] args) {
int number1, number2; // 定義變量,保存輸入的兩個數
System.out.print("請輸入第一個整數(number1):");
Scanner input = new Scanner(System.in);
number1 = input.nextInt(); // 輸入第一個數
System.out.print("請輸入第二個整數(number2):");
input = new Scanner(System.in);
number2 = input.nextInt(); // 輸入第二個數
System.out.printf("number1=%d,number2=%d\n", number1, number2); // 輸出這兩個數
// 判斷用戶輸入的兩個數是否相等
if (number1 == number2) {
System.out.println("number1 和 number2 相等。");
}
// 判斷用戶輸入的兩個數據是否相等
if (number1 != number2) {
System.out.println("number1 和 number2 不相等。");
// 判斷用戶輸入的數1是否大於數2
if (number1 > number2) {
System.out.println("number1 大於 number2。");
}
// 判斷用戶輸入的數1是否小於數2
if (number1 < number2) {
System.out.println("number1 小於 number2。");
}
}
}
結果:
程序中,使用 input.nextInt() 接收用戶從鍵盤輸入的兩個數,然後通過關係運算符來比較這兩個數之間的大小。
這裏用到了 if 語句,它是一個流程控制語句,將在後面的章節中詳細講解。