不同类中的hashCode方法

本文深入探讨了Java中不同类的hashCode方法实现,包括Object、String、Integer和HashMap类。详细解析了这些类如何生成哈希码,以及哈希码在集合框架中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Object的hashCode( )

public class Object{
        public native int hashCode();  
}

大家看到了,爸爸类Object提供了一个本地方法,返回值类型为int,奋斗过程交给了儿子类。

2、String类的hashCode( )

public int hashCode() {
	int h = hash;
	if (h == 0 && value.length > 0) {
		hash = h = isLatin1() ? StringLatin1.hashCode(value) : StringUTF16.hashCode(value);
	}
	return h;
}
private boolean isLatin1() {
	return COMPACT_STRINGS && coder == LATIN1;
}

再看,String类hashCode方法居然想返回哈希码(hash)!那些看不懂从哪里来的词都是String内部的变量和方法。经过一系列的*&&%%^以后,hashCode返回哈希码,作用是什么?以后写集合框架的时候再说。

3、Integer类的hashCode( ),数值型类以它为例。

public int hashCode() {
	return Integer.hashCode(value);
}

public static int hashCode(int value) {
	return value;
}

大家看到了,Integer不仅重写了,还自己重载了,调用Integer的hashCode( )方法直接返回它的int值。比起String来,这个类是真的懒。

4、HashMap类的hashCode( )

public final int hashCode() {
	return Objects.hashCode(key) ^ Objects.hashCode(value);
}
public static int hashCode(Object o) {
	return o != null ? o.hashCode() : 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值