Rumah  >  Soal Jawab  >  teks badan

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

高洛峰高洛峰2713 hari yang lalu504

membalas semua(5)saya akan balas

  • 怪我咯

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

    Saya mengetahuinya kerana saya tidak berhati-hati semasa membaca;
    String menulis semula kaedah hashCode dan nilai hashCodenya ditentukan oleh kandungan, bukan alamat

    balas
    0
  • 巴扎黑

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

    Menggunakan == untuk menentukan String dalam Java adalah untuk menentukan alamat dua objek dan bukannya hashCode. Kerana anda mempunyai dua objek String, dan kerana anda menggunakan baharu untuk kedua-duanya, menggunakan == adalah palsu.

    balas
    0
  • 巴扎黑

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

    1. Kod hash dan == adalah berbeza. == membandingkan alamat memori, dan kod hash dikira berdasarkan pembolehubah contoh.

    2. Anda menggunakan baharu untuk mencipta dua kejadian String (kata kunci baharu akan membuka ruang memori baharu), dan bukannya merujuk terus "hello" dalam kumpulan rentetan Berikut ialah kod sumber pembina ini.

      public String(String original) {
         this.value = original.value;
         this.hash = original.hash;
      }

      Kaedah pengiraan cincang String adalah berdasarkan nilai dan cincang dalam kod di atas.

    balas
    0
  • 大家讲道理

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

    == Apa yang dibandingkan ialah alamat memori dan sama dengan hampir diperolehi daripada setiap aksara rentetan Setiap aksara adalah sama dan cincang adalah sama, tetapi alamat memori berbeza

    balas
    0
  • PHP中文网

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

    == menentukan sama ada dua pembolehubah rujukan menghala ke objek yang sama. Apabila kandungan dua objek adalah sama, kod cincang mereka adalah sama, tetapi rujukannya tidak sama

    balas
    0
  • Batalbalas