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

 

posted on 2023-07-27 14:56  wuzx-blog  阅读(97)  评论(0编辑  收藏  举报