Object类学习

源码:

/*
 * Copyright (c) 1994, 2012, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 */
 
package java.lang;
 
/**
 * Class {@code Object} is the root of the class hierarchy.
 * Every class has {@code Object} as a superclass. All objects,
 * including arrays, implement the methods of this class.
 *
 * @author  unascribed
 * @see     java.lang.Class
 * @since   JDK1.0
 */
public class Object {
 
    private static native void registerNatives();
    static {
        registerNatives();
    }
    public final native Class<?> getClass();
 
     
    public native int hashCode();
 
     
    public boolean equals(Object obj) {
        return (this == obj);
    }
 
    
    protected native Object clone() throws CloneNotSupportedException;
 
    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
 
    public final native void notify();
 
 
    public final native void notifyAll();
 
 
    public final native void wait(long timeout) throws InterruptedException;
 
 
    public final void wait(long timeout, int nanos) throws InterruptedException {
        if (timeout < 0) {
            throw new IllegalArgumentException("timeout value is negative");
        }
 
        if (nanos < 0 || nanos > 999999) {
            throw new IllegalArgumentException(
                                "nanosecond timeout value out of range");
        }
 
        if (nanos > 0) {
            timeout++;
        }
 
        wait(timeout);
    }
 
    public final void wait() throws InterruptedException {
        wait(0);
    }
 
    protected void finalize() throws Throwable { }
}

始祖:

    Object类是Java中所有类的最终祖先,在Java中,每个类都是由它扩展而来的,但是并不需要这样写 class Employee extends Object,因为如果在没有明确指出父类的时候,Object就被认为是这个类的最终父类。在Java中,只有基本类型的值不是对象,而所有的数组类型等都扩展于Object类型。


hashcode():

  1. 每个对象都有自己hashCode,对象的存储地址值;
  2. String自己重写了hashCode()==>字符串内容
  3. 对象自己不重写hashCOde()方法就是取地址值

equals():

  • 默认比较的是对象的hashCode--地址值(引用)
  • String也重写了该方法
  • 一般对象不重写该方法,很可能不能正确比较结果
  • 比较时,当hashCode一致则会调用该方法具体比较(可自定义根据对象某些属性比较)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值