Rumah > Soal Jawab > teks badan
java怎么打印每个对象的内存地址呢?hashcode能代表内存地址的不同吗?
黄舟2017-04-18 10:18:13
Saya ingat ia tidak dibenarkan. Apakah sebab anda mencetak alamat memori?
Kod cincang tidak semestinya bermakna alamat memori adalah berbeza. JVM yang berbeza mempunyai pelaksanaan yang berbeza.
伊谢尔伦2017-04-18 10:18:13
Kod hash() objek mengembalikan alamat memori secara lalai, tetapi Kod hash() boleh ditulis semula, jadi Kod hash() tidak boleh mewakili alamat memori yang berbeza
Kaedah System.identityHashCode(Object) boleh mengembalikan alamat memori objek, tidak kira sama ada kelas objek mengatasi kaedah hashCode()
天蓬老师2017-04-18 10:18:13
Kaedah toString dalam kelas Java Object mencetak alamat pembolehubah rujukan secara lalai Jika ia tidak mencetak alamat, maka toString telah ditindih dalam subkelas Anda boleh cuba mengatasi toString
PHPz2017-04-18 10:18:13
Baca API JDK dengan teliti
Protokol umum Kod hash ialah:
Semasa pelaksanaan aplikasi Java, kaedah hashCode mesti secara konsisten mengembalikan integer yang sama apabila dipanggil berbilang kali pada objek yang sama, dengan syarat maklumat yang digunakan untuk menyamai objek tidak diubah suai. Integer ini tidak perlu konsisten daripada satu pelaksanaan aplikasi kepada pelaksanaan lain bagi aplikasi yang sama.
Jika dua objek adalah sama mengikut kaedah equals(Object), maka memanggil kaedah hashCode pada setiap dua objek mesti menghasilkan hasil integer yang sama.
Jika dua objek tidak sama mengikut kaedah equals(java.lang.Object), maka memanggil kaedah hashCode pada mana-mana objek tidak diperlukan untuk menghasilkan keputusan integer yang berbeza. Walau bagaimanapun, pengaturcara harus sedar bahawa menjana hasil integer yang berbeza untuk objek tidak sama boleh meningkatkan prestasi jadual cincang.
Sebenarnya, kaedah hashCode yang ditakrifkan oleh kelas Objek memang mengembalikan integer yang berbeza untuk objek yang berbeza. (Ini biasanya dicapai dengan menukar alamat dalaman objek kepada integer, tetapi bahasa pengaturcaraan JavaTM tidak memerlukan teknik pelaksanaan ini.)