java.lang.object个人理解

1、 private static native void registerNatives();
    static {
        registerNatives();
    }

注释:native修饰,表示该方法没有在Java中实现,而是在C/C++中实现,编译成类库dll,然后再由Java调用它。作用:方法注册到本地,也就是初始化java方法映射到C/C++的方法。

2、 public final native Class<?> getClass();

注释:getClass()也是一个native方法,返回的是此Object对象的类对象/运行时类对象Class<?>。效果与Object.class相同。

3、 public native int hashCode();

注释:hashCode()方法返回一个整形数值,表示该对象的哈希码值。

hashCode()具有如下约定:

1).在Java应用程序程序执行期间,对于同一对象多次调用hashCode()方法时,其返回的哈希码是相同的,前提是将对象进行equals比较时所用的标尺信息未做修改。在Java应用程序的一次执行到另外一次执行,同一对象的hashCode()返回的哈希码无须保持一致;

2).如果两个对象相等(依据:调用equals()方法),那么这两个对象调用hashCode()返回的哈希码也必须相等;

3).反之,两个对象调用hasCode()返回的哈希码相等,这两个对象不一定相等。

即严格的数学逻辑表示为: 两个对象相等 <=>  equals()相等  => hashCode()相等。因此,重写equlas()方法必须重写hashCode()方法,以保证此逻辑严格成立,同时可以推理出:hasCode()不相等 => equals()不相等 <=> 两个对象不相等。

修改equals()方法,必须同时重写hashCode()方法。

4、  public boolean equals(Object obj) {
        return (this == obj);
    }

注释:判断两个对象是否相等,每个类中有不同的判断方法;Object类中equals() 和== 是一样的,其他类如果有不同的比较方法,需要在自类中重新equals()方法。Equals()方法比较的是两个对象的特征、属性是否相同;==比较的是两个对象的地址或者值是否相同;

5、protected native Object clone() throws CloneNotSupportedException;

注释:native方法。返回一个克隆的对象。protected属性:在同一个包中的子类或者不同包中子类可以访问此方法,即子类中的父类对象是不能访问这个方法的。

6、 public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

注释:返回该对象名称+@+对象的hashCode转换成16进制的值。

7、  public final native void notify();

8、  public final native void notifyAll();

注释:唤醒该对象监视下的单线程/所有线程;(唤醒后,该同步代码块的方法继续往下执行,执行完了之后,释放锁,wait()所在程序块获得锁)

9、wait(long timeout)/wait(long timeout, int nanos):调用此方法所在的当前线程等待,直到在其他线程上调用此方法的主调(某一对象)的notisfy()/notisfyAll()方法,或超过指定的超时时间量。

10、 protected void finalize() throws Throwable { }

注释:当jvm回收对象时,自动调用该方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值