Objects类是Java jdk 1.7开始引入的
This class consists of static utility methods for operating on objects. These utilities include
null-safe or null-tolerant methods for computing the hash code of an object, returning a
string for an object, and comparing two objects.
翻译成中文:
这个类包括用于操作对象的静态实用方法。这些工具包括用于计算对象的哈希代码的空安全
或空容错方法,返回一个对象的字符串,并比较两个对象。
下面是一个示例:
public class HelloWord{
public static void main(String[] args) {
System.out.println("a".hashCode());
System.out.println(Objects.hashCode("a"));
System.out.println(Objects.hash("a"));
}
}
输出结果:97
97
128
由此可见:前两个都是直接计算a的hashCode()编码的,而第三个确实得出不一样的结果,通过查看源码可以发现:
Objects类中的hash()函数是这样定义的
public static int hash(Object... values) {
return Arrays.hashCode(values);
}
这里调用Arrays类的hashCode()函数
public static int hashCode(Object a[]) {
if (a == null)
return 0;
int result = 1;
for (Object element : a)
result = 31 * result + (element == null ? 0 : element.hashCode());
return result;
}
由该源码可以看出,当a不为空的时候,hash()执行的流程是
31*1+a.hashCode(); 即在a的hash值上加上31,所以输出结果是31+97=128.