Java基础之:toString与hashCode

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.cnblogs.com/SongHai/p/14120844.html