码迷,mamicode.com
首页 > 编程语言 > 详细

java.lang包【Object类】

时间:2017-08-26 16:06:10      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:get   散列   变量   ash   存在   final   如何   通过   基础   

基本描述:

  (1)Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入;

  (2)Object类是所有Java类的祖先。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。可以使用类型为Object的变量指向任意类型的对象

Object的主要方法介绍:

package java.lang;     
public class Object {     
      
   /* 一个本地方法,具体是用C(C++)在DLL中实现的,然后通过JNI调用。*/      
    private static native void registerNatives();     
  /* 对象初始化时自动调用此方法*/    
    static {     
        registerNatives();     
    }     
   /* 返回此 Object 的运行时类。*/    
    public final native Class<?> getClass(); 

    public native int hashCode();

hashCode()方法:

hash值:Java中的hashCode方法就是根据一定的规则将与对象相关的信息(比如对象的存储地址,对象的字段等)映射成一个数值,这个数值称作为散列值。

情景:考虑一种情况,当向集合中插入对象时,如何判别在集合中是否已经存在该对象了?(注意:集合中不允许重复的元素存在)。

大多数人都会想到调用equals方法来逐个进行比较,这个方法确实可行。但是如果集合中已经存在一万条数据或者更多的数据,如果采用equals方法去逐一比较,效率必然是一个问题。此时hashCode方法的作用就体现出来了,当集合要添加新的对象时,先调用这个对象的hashCode方法,得到对应的hashcode值。实际上在HashMap的具体实现中会用一个table保存已经存进去的对象的hashcode值,如果table中没有该hashcode值,它就可以直接存进去,不用再进行任何比较了;如果存在该hashcode值, 就调用它的equals方法与新元素进行比较,相同的话就不存了,不相同就散列其它的地址。

重写hashCode()方法的基本规则:

· 在程序运行过程中,同一个对象多次调用hashCode()方法应该返回相同的值。

· 当两个对象通过equals()方法比较返回true时,则两个对象的hashCode()方法返回相等的值。

· 对象用作equals()方法比较标准的Field,都应该用来计算hashCode值。

 

java.lang包【Object类】

标签:get   散列   变量   ash   存在   final   如何   通过   基础   

原文地址:http://www.cnblogs.com/myseries/p/7435395.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!