繁体   English   中英

Java String hashCode为null字符串

[英]Java String hashCode of null string

唯一有趣的是,为什么java.lang.String中的方法hashCode()不是静态的? 如果返回null,例如-1? 因为经常需要做一些像:

String s;
.............
if (s==null) {
  return 0;}
else {
  return s.hashCode();
}

谢谢。

正如其他人所说, hashCodeObject上的一个方法,并且是非静态的,因为它本身就依赖(即属于)一个对象/实例。

请注意,Java 7引入了Objects类,它具有hashCode(Object)方法,它完全符合您的要求:如果o为非null,则返回o.hashCode()否则返回0

这个类也有与possibly-处理等方法null值,如equals(Object, Object)toString(Object)和其他几个人。

因为如果它是静态的"1".hashCode()"2".hashCode()会返回相同的值,这显然是错误的。

它是特定的每个实例,并受其影响,因此它不能是静态的。

因为String的哈希码是该String的属性。

通过相同的思路,您可以使每个方法都是静态的。

hashCode用于获取对象的hashCode,以便知道必须在该HashMap哪个桶中放置该对象。 因此它必须是对象的实例方法,并且必须以多态方式调用它。

null可以用作HashMap中的键,但它被视为一种特殊情况。

您似乎将hashCode用于其他目的,因此您必须以特定方式处理。

它返回的Object hashCode不是一个类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM