Java String hashCode为null字符串

use*_*818 4 java string null static

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

String s;
.............
if (s==null) {
  return 0;}
else {
  return s.hashCode();
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

Joa*_*uer 15

正如其他人所指出的那样hashCode,方法Object是非静态的,因为它本身依赖(即属于)对象/实例.

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

该类还有其他处理可能null值的方法,例如equals(Object, Object),toString(Object)和其他一些方法.


ami*_*mit 7

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

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