前回の記事で紹介した演算演算子に続き、今回は比較演算子を紹介します。
I. 概要
Java には通常、次の比較演算子があります。
オペレーター | 例 | 説明する |
---|---|---|
> | x > y | x が y より大きい場合は true を返します。 |
>= | x >= y | x が y 以上の場合に true を返します。 |
< | x < y | x が y より小さい場合は true を返します。 |
<= | x <= y | x が y 以下の場合に true を返します。 |
== | x == y | x が y と等しい場合に true を返します。 |
!= | x != y | x と y が等しくない場合は true を返します。 |
例 | y の x インスタンス | x が y と同じクラスであるか、y のサブクラスである場合に true を返します。 |
コード例:
package com.test.javaroads.operator;
/**
* @author: javaroads
* @date: 2022/12/1 16:44
* @description:
*/
public class Four {
public static void main(String[] args) {
int a = 100;
double b = 100.001D;
if (b > a) {
System.out.println("b > a 为" + (b > a));
}
if (b >= a) {
System.out.println("b >= a 为" + (b >= a));
}
if (a < b) {
System.out.println("a < b 为" + (a < b));
}
if (a <= b) {
System.out.println("a <= b 为" + (a <= b));
}
}
}
結果:
大きさの比較については皆さんご存知かと思いますのでここでは説明しません。
2. == と != を使用します。
使用および != 注: Java データ型は、プリミティブ型と参照型の2 つの型に大別されます。プリミティブ型で使用されると != は問題ありませんが、参照型で使用する場合は注意してください。
==!= 参照型を使用する場合は注意してください: オブジェクトが保持する値を比較しているのではなく、オブジェクト参照の参照元が同じかどうかを比較しています。オブジェクトが保持している値を比較したい場合は、次のように使用できます。イコールメソッド。
同じ値、同じ参照:
値は同じですが、参照が異なります。
コードに直接進みましょう。
package com.test.javaroads.operator;
/**
* @author: javaroads
* @date: 2022/12/1 17:14
* @description:
*/
public class Five {
public static void main(String[] args) {
StringBuffer x = new StringBuffer("xyz");
StringBuffer y = x;
System.out.println("x和y比较为" + (x == y));
StringBuffer z = new StringBuffer("xyz");
StringBuffer w = new StringBuffer("xyz");
System.out.println("z和w比较为" + (z == w));
}
}
結果:
コードの説明:
- new 演算子を使用してオブジェクト x を作成します。
- 代入演算子 = を使用すると、オブジェクト x がオブジェクト y にコピーされます。この場合、メモリ領域内の y の領域を再割り当てするのではなく、x の参照情報を y にコピーするだけです。
- == 演算子を使用して x と y を比較すると、参照アドレスが同じであるため true が返されます。
- オブジェクト z は new 演算子を使用して作成されます。
- オブジェクト w は new 演算子を使用して作成されます。
- == 演算子を使用して z と w を比較すると、値 abc は同じですが参照アドレスが異なるため、false が返されます。
3.instanceofの使用
instanceof は、左側のオペランドが右側のオペランドと同じクラスまたはサブクラスに属しているかどうかをテストする演算子です。左側のオペランドには任意のオブジェクト参照式 (変数など) を指定でき、右側のオペランドにはクラス、インターフェイス、または配列型を指定できます。 。
コードを通じてそれを示してみましょう。
父親:
package com.test.javaroads.operator;
/**
* @author: javaroads
* @date: 2022/12/1 17:38
* @description:
*/
public class Six {
public static void main(String[] args) {
SixSub sub = new SixSub();
if (sub instanceof Six) {
System.out.println("sub属于Six类");
} else {
System.out.println("sub不属于Six类");
}
}
}
サブクラス:
package com.test.javaroads.operator;
/**
* @author: javaroads
* @date: 2022/12/1 17:38
* @description:
*/
public class SixSub extends Six {
}
親クラスの main メソッドを実行します。
コードの説明:
- 値がクラス SixSub のオブジェクト変数 sub を宣言して生成します。
- 演算子instanceofを使用して、オブジェクト変数subが同じクラスであるか、Sixクラスのサブクラスであるかを確認します。sub のデータ型が SixSub クラスであるため、true を返します。SixSub クラスは Six クラスのサブクラスです。