java 中两个 String 具有相同的 hashCode 使用 == 判断返回 false ?
高洛峰
高洛峰 2017-04-18 10:06:30
0
5
531
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(5)
刘奇

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

ではなく、内容によって決まります。
いいねを押す +0
巴扎黑

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

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

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

    リーリー

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

いいねを押す +0
大家讲道理

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

いいねを押す +0
洪涛

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!