Object之总结(一)

一、Object类中一共有12个方法。一个私有方法,两个保护方法,9个公共方法。另外还有一个静态代码块。

1、registerNatives方法。私有静态本地无参数无返回值。

 

2、finalize方法。保护方法。无参数无返回值。

   该方法用于释放资源。因为无法确定该方法什么时候被调用,很少使用。

 

3、clone方法。保护方法。本地方法,无参数Object类型返回值。

   实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。主要是JAVA里除了8种基本类型传参数是值传递,其他的类对象传参数都是引用传递。

 

4、equals方法。Object参数boolean返回值。

   equals()通常用来进行比较,在Object类中,它进行了引用的比较,只有引用相同时会返回true。但是这样并不是我们想要的比较的情况,比如字符串的比较是比较每个字符是否相同。那么在String类中就会对equals()方法进行重写。都知道java中比较字符串是否相等应该用equals();而==则是比较的值,也就是引用;那么为什么是这样的呢?我今天看了下equals的实现方法,发现字符串的比较,是通过每一个字符进行比较,如果都相等,则返回true;而源码里面Object类型的equals方法却是直接用==来代替的,也就是说相当于直接比较引用了,这也就是为什么我们有时候要重写equals方法了。

 

###################################################### 

下面附上Jdk中String类型的equals方法源码。

 

5、hashCode方法。本地方法。返回整型。

   一个对象的签名,但是不同对象该签名可能会重复,只是一般不会。该方法用来返回其所在对象的物理地址(哈希码值),常会和equals方法同时重写,确保相等的两个对象拥有相等的.hashCode

 

6、getClass方法。不可覆写的本地方法。

 

7、toString方法。全限定性类名+“@”+hashCode值的十六进制表示。

 

8、wait方法。不可覆写方法。本质是调用wait( long timeout)方法。

   wait方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait()方法一直等待,直到获得锁或者被中断。

 

9、wait(long timeout)。不可覆写的本地方法。

   wait(long timeout)设定一个超时间隔,如果在规定时间内没有获得锁就返回。

调用该方法后当前线程进入睡眠状态,直到以下事件发生。

(1)其他线程调用了该对象的notify方法。

(2)其他线程调用了该对象的notifyAll方法。

(3)其他线程调用了interrupt中断该线程。

(4)时间间隔到了。

 

 

10、wait(long timeout, int nanos)方法。不可覆写。

 

11、notify方法。不可覆写的本地方法。

   该方法唤醒在该对象上等待的某个线程。

 

12、notifyAll方法。不可覆写的本地方法。

   该方法唤醒在该对象上等待的所有线程。

 

 

二、总结。

1、

2、

3、

 

三、

 

posted @ 2018-08-15 16:45  igoodful  阅读(152)  评论(0编辑  收藏  举报