プリミティブには Java の .equals メソッドが必要ないのはなぜですか?

PHPz
リリース: 2024-02-08 23:18:21
転載
525 人が閲覧しました

Java では、プリミティブ (プリミティブ データ型) は、int、double、char などの Java 言語の基本データ型を指します。対照的に、String、Object などの参照データ型があります。参照データ型とは異なり、プリミティブ型は .equals() メソッドを使用して比較する必要はありません。これは、プリミティブ型変数にはオブジェクト参照ではなく実際の値が格納されるためです。したがって、2 つのプリミティブ型変数を比較する場合、値自体が等しいかどうかを比較するため、== 演算子を直接比較に使用できます。参照データ型の場合は、オブジェクト参照が同じオブジェクトを指しているかどうかを比較するため、.equals() メソッドを使用する必要があります。 Java ではプリミティブ型に .equals() メソッドが必要ないのはこのためです。

質問内容

つまり、Java では文字列を比較する場合、 == はメモリ アドレスのみを比較し、内容は比較しないため、 .equals メソッドを使用する必要があります。大丈夫、それは理解できます。しかし、私が理解できないのは、なぜオリジナルには同じ問題がないのかということです。プリミティブで == 演算子を使用するにはどうすればよいですか。

回避策

これは、プリミティブが完全な Java オブジェクトではないため、 「値によって渡される」のに対し、オブジェクトは「参照によって渡される」という事実に帰着します。

さらに、プリミティブでは .equals() 関数を使用できません。プリミティブはクラスから完全にインスタンス化された Java オブジェクトではなく、クラス/オブジェクトで関数を定義する必要があるためです。

ほとんどのプリミティブには同等のオブジェクト型があります。たとえば、Integerint の完全に実装されたオブジェクト型です。最新の Java では、autoboxing# という名前のオブジェクト型が得られます。 ##。したがって、int を使用する代わりに Integer 型を使用すると、.equals() を呼び出すことができます。 Java の

String は少し特殊ですが、基本的には不変オブジェクトです。

これはランダムな情報の詰め合わせですが、これらを合計すると、何が起こっているのか理解できると思います。

以上がプリミティブには Java の .equals メソッドが必要ないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!