Java基礎之:toString與hashCode
hashCode()
方法回傳:回傳根據地址生成的十進制哈希值,
1)兩個參考,如果指向的是同一個物件,則哈希值肯定是一樣的!
2)兩個參考,如果指向的是不同物件,則哈希值是不一樣的
3)哈希值主要根據地址號來的!, 不能完全將哈希值等價于地址,
toString()
方法回傳:全類名 + @ + 哈希值的十六進制,
子類經常會重寫toString()方法,用于顯示各物件資訊
當直接輸出一個物件時,默認呼叫toString方法,
例如:System.out.println(a); ===> System.out.println(a.toString());
簡單案例
package object;
public class Hashcode_toString {
public static void main(String[] args) {
A a = new A("小范");
System.out.println(a); //重寫toString
B b = new B();
System.out.println(b.toString()); // 沒有重寫toString,回傳 物件型別與十六進制hashCode
System.out.println(b.hashCode()); // 輸出十進制hashCode
// toString原始碼:
/*
* public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
getClass():回傳物件的運行型別,特別有用!(因為運行型別是可變了,會經常出現變化,)
*/
//getClass():
Object string = new String("hello");
System.out.println(string.getClass());
}
}
/**
* @author FSH
*
*/
class A{
private String name;
public A(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "A [name=" + name + "]";
}
}
class B{
}

在之前的 "Java基礎之:構造方法(構造器)與this關鍵字" (https://www.cnblogs.com/SongHai/p/14037087.html)中,this關鍵字的第一個案例中也講到了關于hashCode與toString,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/233359.html
標籤:Java
上一篇:JVM的藝術—類加載器篇(三)
