JDK源码 java.lang.Object 阅读笔记

Object 类是所有类的基类,当一个类没有直接继承某个类时,默认继承Object类,即任何类都直接或间接继承此类,Object 类中能访问的方法在所有类中都可以调用。

1.getClass()

用native声明的本地方法,作用是返回对象的散列码,即此Object对象的类对象/运行时类对象Class<?>,是int类型的数值 。

2.hashCode()

hashCode()方法被用来获取给定对象的唯一整数。这个整数被用来确定对象被存储在HashTable类似的结构中的位置。默认的,Object类的hashCode()方法返回这个对象存储的内存地址的编号。

该方法的主要作用在于通过哈希算法(即散列算法)减少实际调用equals方法的次数。

Java对于eqauls方法和hashCode方法有如下规定:
1、如果两个对象相同,那么它们的hashCode值一定要相同;
2、如果两个对象的hashCode相同,它们并不一定相同 上面说的对象相同指的是用eqauls方法比较。

3.equals(Object obj)

作用在于比较两个对象的引用是否相等。与String、Math等里面的equals并不相同。

该方法比较的标尺为==。此标尺不固定,在其他类中可以按照实际的需要对此标尺含义进行重定义。

4. clone()

该方法的目的是创建并返回此对象的一个副本,而克隆出来的副本与原来的对象没有任何关系的。术语表述为:clone函数返回的是一个引用,指向的是新的clone出来的对象,此对象与原对象分别占用不同的堆空间。

该方法是 protected 的,是留待被子类 继承重载的。该方法又是 native 的,必然做了
与具体平台相关的底层工作。

一般当需要修改对象属性,又不想影响原来的属性值,可以使用clone。

5.toString()

作用在于返回此对象所在的类及对应的堆空间对象实体的首地址值。

6.notify()

notify 表示持有对象锁的线程A准备释放对象锁权限,通知jvm唤醒某个竞争该对象锁的线程X。

7. notifyAll()

notifyAll 表示持有对象锁的线程A准备释放对象锁权限,通知jvm唤醒所有竞争该对象锁的线程。

8.wait() 

进入等待,需要notify ,notifyAll才能唤醒

9.wait(long timeoutMillis)

进入等待,经过timeout 超时后,若未被唤醒,则自动唤醒

10.wait(long timeoutMillis, int nanos)

进入等待,经过timeout 超时后,若未被唤醒,则自动唤醒。相对wait(long timeout) 更加精确时间

11.finalize()

用于垃圾回收,由jvm自动调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值