哈希值
434字约1分钟
2025-09-23
toString
方法
- 默认返回:全类名 + @ + 哈希值的十六进制 + 哈希值的十进制(第一个输出哈希值的才会显示哈希值的十进制数),一般子类往往会重写
toString
方法,用于返回对象的属性信息 - 当只输出对象时,
toString
方法往往也会被调用
public class Demo01 {
public static void main(String[] args) {
A a = new A("张三", 20000.9);
// a.hashCode()的意思是该对象的hashCode值
System.out.println(a.toString() + " hashCode = " + a.hashCode());
// 如果只写对象的引用名,其效果等于 引用名.toString
System.out.println(a);
// 运行结果
// name=张三
// say=20000.9
}
}
class A {
private String name;
private double say;
public A(String name, double say) {
this.name = name;
this.say = say;
}
// 重写 toString 方法,一般是输出对象的属性
@Override
public String toString() {
// 返回该对象的属性值
return "name='" + name + "\n" +
"say=" + say;
}
}
hashCode
方法
hashCode
方法具有提高哈希结构容器的效率- 两个引用对象,如果都是指向同一个对象,那么
hashCode
值绝对是一样的 - 两个引用对象,如果指向的不是同一个对象,那么
hashCode
值是不一样的(有极低的概率会一样) - 因为Java是运行在虚拟机上的,所以不能拿到真的内存地址;
hashCode
值是根据对象的内部地址(所谓的内部地址就是真正的对象地址,但Java是跑在虚拟机上的,所以就不能拿到这个真正的内部地址)来转换成一个整数来实现的,所以hashCode
值不能说是内存地址,也不等于内存地址 - 在集合中,如果需要的话会重写
hashCode
方法