Java面试题 P10:hashCode与equals区别
一、hashCode
hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。hashCode() 定义在JDK的Object.java中,这就意味着Java中的任何类都包含有hashCode() 函数。
二、equals
equals它的作用也是判断两个对象是否相等,如果对象重写了equals()方法,比较两个对象的内容是否相等;如果没有重写,比较两个对象的地址是否相同,价于“==”。同样的,equals()定义在JDK的Object.java中,这就意味着Java中的任何类都包含有equals()函数。
1、用于定义对比两个对象的对比规则,来判断这两个对象什么时候是相等的,什么时候是不相等的
2、默认使用object的equals,实际上就是==号,对比的是对象在栈中的引用的地址,如果是基本类型变量的话对比的是栈中的值,对比的是引用地址。
1 public static void main(String[] args) 2 { 3 Person a=new Person("a"); 4 Person b=new Person("a"); 5 6 String c="aa"; 7 String d="bb"; 8 //equals 9 System.out.println(a.equals(b)); 10 System.out.println(c.equals(d)); 11 //hashCode 12 System.out.println(a.hashCode()); 13 System.out.println(b.hashCode()); 14 System.out.println(c.hashCode()); 15 System.out.println(d.hashCode()); 16 17 System.out.println(a); 18 System.out.println(Integer.toHexString(a.hashCode())); 19 }
结果:
1 false 2 false 3 149928006 4 713338599 5 3104 6 3136 7 com.atguigu.controller.Person@8efb846 8 8efb846