java中hashcode()函数的理解

来源:互联网 发布:拍a发b淘宝会被降权吗 编辑:程序博客网 时间:2024/04/30 11:22

前提:Java的数据类型分为   基本数据类型和引用类型

1、hashCode();此函数的返回值是整形,其含义是此对象的地址。所以只要地址不同返回值不同。

String s1=“jzy";

int m1=s1.hashCode();

2、java中的所有对象都有这个方法(包括String)。

3、不同的对象其hashCode();不同

class father{

}

     main(){

father f1=new father();

father f2=new father();

f1.hashCode() !=f2.hashCode();

}

4、现在说一个重点:根据前面的想法,好像是对于引用类型的数据只要其引用不同则其hashCode()也不同。这句话对除了String类型外的其他引用类型都适用。

String类型,只要类型的值相同,则其hashCode();值相同。

     String s2=“jzy”;

     int m2=s2.hashCode();

     则m1==m2;

    String s3=new String(“jzy”);

    m3=s3.hashCode();

     则m3==m1;

    不过s3!=s1(此处请参考博客:Java中String类型笔试题目,对象声明与创建及在内存中的存贮)

public class test{public static void main(String args[]){String s1="jzy";String s2="jzy";String s3=new String("jzy");int m1=s1.hashCode();int m2=s2.hashCode();int m3=s3.hashCode();System.out.println(m1==m2);System.out.println(m1==m3);Father f1=new Father();Father f2=new Father();System.out.println(f1.hashCode());System.out.println(f2.hashCode());}}class Father{}
运行结果:

true
true
625117197
854728855
说明对于String类型的对象,只要其字符串的值相同则其hashCode();相同;对于其他引用类型则要看他们的引用值是否相等。

0 0
原创粉丝点击