hashCode方法和equals方法

来源:互联网 发布:手机身份证合成软件 编辑:程序博客网 时间:2024/06/09 19:57


hashCode方法:

                         int hashCode()返回对象的散列码,散列码可以是任意的整数或负数。两个相等的对象要求返回相等的散列码。

请看上面的例子:

                        String s="ok";

                        StringBuilder  sb=new StringBuilder(s);

                        system.out.println(s.hashCode()+" "+sb.hashCode());

                        String t=new String("ok");

                        StringBuilder   tb=new  StringBuilder(t);

                        system.out.println(t.hashCode()+" "+tb.hashCode());

                       对象                         散列码

                         s                              2556

                         sb                          20526976

                         t                                2556

                         tb                            20527144

字符串s与t拥有相同的散列码,这是因为字符串的散列码是由内容导出的(String类重写了从Object类继承的hashCode方法),而字符串缓冲流sb与tb却有着不同散列码,这是因为   StringBuilder 类中没有重写hashCode()方法,它的散列码是由object类默认hashCode方法导出的对象的存储地址

  注意:由于hashCode方法定义在object类中,因此每个对象都有一个默认的散列码,其值是对象的存储地址)

             同一个对象它们的散列码一定相等,但散列码相同不一定是同一个对象!

equals方法:

                   用hashCode方法比较过,在用重写的equals方法,比较对象的内容