ホームページ  >  に質問  >  本文

java 中两个 String 具有相同的 hashCode 使用 == 判断返回 false ?

高洛峰高洛峰2764日前537

全員に返信(5)返信します

  • 怪我咯

    怪我咯2017-04-18 10:08:30

    読んでいるときに注意しなかったため、私はそれを理解しました。
    StringhashCode メソッドを書き換えました。その hashCode 値はアドレス

    ではなく、内容によって決まります。

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:08:30

    Java で == を使用して String を決定すると、hashCode の代わりに 2 つのオブジェクトのアドレスが決定されます。 2 つの String オブジェクトがあり、両方に new を使用しているため、== を使用すると false になります。

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:08:30

    1. hashCode と == は異なります。 == はメモリ アドレスを比較し、インスタンス変数に基づいて hashCode が計算されます。

    2. 文字列プール内の "hello" を直接参照する代わりに、new を使用して 2 つの String インスタンスを作成しました (new キーワードは新しいメモリ領域を開きます)。以下はこのコンストラクターのソース コードです。

      リーリー

      String のハッシュ計算方法は、上記のコードの値とハッシュに基づいています。

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:08:30

    == 比較されるのは、文字列の各文字からほぼハッシュとイコールが得られますが、メモリアドレスは異なります。

    返事
    0
  • PHP中文网

    PHP中文网2017-04-18 10:08:30

    == は、2 つの参照変数が同じオブジェクトを指しているかどうかを判断します。 2 つのオブジェクトの内容が同じ場合、それらのハッシュコードは同じですが、それらの参照は等しくありません

    返事
    0
  • キャンセル返事