Javaにおける==とequalsの違いは何ですか?

Javaにおける==とequalsの違いは何ですか?

== :

基本型を判断する場合: 2 つの基本データ型の値が同じかどうかを比較します (例: int 10 と int 20 の場合は false を返します)。

参照型を判断する場合: 比較は 2 つのオブジェクトのメモリ アドレスが同じかどうかです。たとえば、2 つの異なる Integer が 1000 の場合、戻り値は false になります。注意が必要な場合: 値が同じかどうか2 つの異なる整数のうち 10 の場合、値は true を返します。

等しい:

equals メソッドは、Object クラスで提供されるメソッドで、オブジェクトの内容が等しいかどうかを定義するために使用されます (注: equals メソッドは、基本データ型の変数には適用できません)。

equals メソッドが書き換えられない場合は、参照型の変数が指すオブジェクトのアドレスが比較されます。

String や Date などのクラスが equals メソッドを書き換えると、ポイントされたオブジェクトの内容が比較されます。たとえば、文字列が等しいかどうかを判断します。

まず、メモリを確認し、次にデータ型を確認し、次に文字列の長さが一貫しているかどうかを確認し、最後に文字列の内容を比較します。

補充:

Java 内部のメモリを節約するために、IntegerCache クラスには、-128 から 127 までの値を持つ Integer オブジェクトをキャッシュする配列があります。Integer.valueOf(int i) を呼び出すと、i の値が -128 ~ 127 の場合、オブジェクトはこのキャッシュから直接返されます。それ以外の場合は、新しい Integer オブジェクトが返されます。つまり、[-128—+127] の間の 2 つの整数の範囲を定義し、同じ値を持つ場合は、== を使用して値を true と比較します。

127 より大きいか -128 より小さい場合、2 つの値が同じであっても、新しい整数が作成され、2 つのオブジェクトが比較され、== を使用して比較すると false が返されます。

おすすめ

転載: blog.csdn.net/weixin_56602545/article/details/130100655
おすすめ