ホームページ  >  記事  >  Java  >  Javaにおける==とequalsの比較演算分析

Javaにおける==とequalsの比較演算分析

王林
王林転載
2020-11-17 15:11:332360ブラウズ

Javaにおける==とequalsの比較演算分析

比較分析:

(学習ビデオ共有: java コース)

==: その機能は、 two 2 つのオブジェクトのアドレスは等しいですか?つまり、2 つのオブジェクトが同じオブジェクトであるかどうかを判断します。 (基本データ型は値を比較し、参照データ型 == メモリ アドレスを比較します)。

equals(): その機能は、2 つのオブジェクトが等しいかどうかを判断することでもあります。ただし、一般に、次の 2 つの使用例があります。

ケース 1: このクラスは、equals() メソッドをカバーしていません。この場合、equals() を使用してこのクラスの 2 つのオブジェクトを比較することは、== を使用して 2 つのオブジェクトを比較することと同等です。

ケース 2: クラスは、equals() メソッドをオーバーライドします。一般に、equals() メソッドをオーバーライドして 2 つのオブジェクトの内容が等しいことを確認します。内容が等しい場合は true が返されます (つまり、2 つのオブジェクトは等しいとみなされます)。

コード例:

public class test1 {
	public static void main(String[] args) {
		String a = new String("ab"); // a 为一个引用
		String b = new String("ab"); // b 为另一个引用,对象的内容一样
		String aa = "ab"; // 放在常量池中
		String bb = "ab"; // 从常量池中查找
		if (aa == bb) // true
		System.out.println("aa==bb");
		if (a == b) // false,非同一对象
		System.out.println("a==b");
		if (a.equals(b)) // true
		System.out.println("aEQb");
		if (42 == 42.0) // true
		System.out.println("true");
	}
}

オブジェクトのequalsメソッドはオブジェクトのメモリアドレスを比較し、Stringのequalsメソッドはオブジェクトを比較するため、Stringのequalsメソッドはオーバーライドされました。 。 String 型のオブジェクトを作成する場合、仮想マシンは定数プールを検索して、作成するオブジェクトと同じ値を持つ既存のオブジェクトがあるかどうかを確認し、存在する場合はそれを現在の参照に割り当てます。そうでない場合は、定数プールに String オブジェクトを再作成します。

関連する推奨事項:Java の使用を開始する

以上がJavaにおける==とequalsの比較演算分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。