objectjava源码
❶ 2020-09-10:java里Object类有哪些方法
Java Object类是所有类的父类,主要方法有:
getClass():获取运行时类型,返回值为Class对象
2.hashCode():返回该对象的哈希码值,是为了提高哈希表的性能(HashTable)
3.equals():判断两个对象是否相等,在Object源码中equals就是使用==去判断,所以在Object中equals是等价于==的,但是在String及某些类对equals进行了重写,实现不同的比较。
4.clone():JAVA里除了8种基本类型传参数是值传递,其他的类对象传参数都是引用传递,我们有时候不希望在方法里讲参数改变,这是就需要在类中复写clone方法。此方法只实现了一个浅层拷贝,对于基本类型字段成功拷贝,对嵌套对象,只把地址拷贝了,需要自己重写clone方法进行深度拷贝。
5.toString():返回一个String字符串,用于描述当前对象的信息,可以重写返回对自己有用的信息,默认返回的是当前对象的类名+hashCode的16进制数字。
6.wait():多线程时用到的方法,作用是让当前线程进入等待状态,同时也会让当前线程释放它所持有的锁。直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,当前线程被唤醒
7.notify():多线程时用到的方法,唤醒该对象等待的某个线程
8.notifyAll():多线程时用到的方法,唤醒该对象等待的所有线程
9.finalize():对象在被GC释放之前调用finalize方法。
你明白了吗?
❷ 在哪里可以看到JAVA的object类中clone方法的源代码
看不到的,是C代码。听说Java开源了,你倒是可以去官网上看看。
调用中实现clonable接口并给出方法。
public class Example implements Clonable {
int valueToClone;
public Object clone() {
Object o = super.clone();
(Example) o).valueToClone = valueToClone;
return o;
}
}
另外参见API. 有的书建议不采用Clonable,因为非常难实现一个完美的Clone 链,且方法本身返回Object需要cast,并不美观。可以自己写一个接口代替。