關係運算子()
運算子 <
,<=
,>
和 >=
是用於比較數字型別的二元運算子。運算子的含義如你所料。例如,如果 a
和 b
被宣告為 byte
,short
,char
,int
,long
,float
,double
或相應的盒裝型別中的任何一個:
- `a < b` tests if the value of `a` is less than the value of `b`.
- `a <= b` tests if the value of `a` is less than or equal to the value of `b`.
- `a > b` tests if the value of `a` is greater than the value of `b`.
- `a >= b` tests if the value of `a` is greater than or equal to the value of `b`.
在所有情況下,這些運算子的結果型別都是 boolean
。
關係運算子可用於比較具有不同型別的數字。例如:
int i = 1;
long l = 2;
if (i < l) {
System.out.println("i is smaller");
}
當其中一個或兩個數字都是盒裝數字型別的例項時,可以使用關係運算子。例如:
Integer i = 1; // 1 is autoboxed to an Integer
Integer j = 2; // 2 is autoboxed to an Integer
if (i < j) {
System.out.println("i is smaller");
}
具體行為總結如下:
- 如果其中一個運算元是盒裝型別,則將其取消裝箱。
- 如果其中一個運算元現在是
byte
,short
或char
,它將被提升為int
。 - 如果運算元的型別不相同,則具有較小型別的運算元被提升為較大型別。
- 對得到的
int
,long
,float
或double
值進行比較。
你需要注意涉及浮點數的關係比較:
- 計算浮點數的表示式通常會導致舍入誤差,因為計算機浮點表示的精度有限。
- 比較整數型別和浮點型別時,整數到浮點的轉換也可能導致舍入錯誤。
最後,Java 確實支援使用除上面列出的型別以外的任何型別的關係運算子。例如,你不能使用這些運算子來比較字串,數字陣列等。