关于Java基类Object

 java.lang.Object,Object是Java所有类的祖先类(父类)

1.首先看object源码 JDK1.7(oracle)

public class Object {
//本地方法,C/C++在DLL中实现,通过JNI调用
private static native void registerNatives();
//类初始化调用此方法
static {
registerNatives();
}
//返回此Object的运行时类(每个类的Class类对象)
public final native Class<?> getClass();
//获得该对象的hash值
public native int hashCode();
//对比两对象的内存地址,如果不重写,equals方法比较的是对象地址
public boolean equals(Object obj) {
return (this == obj);
}
//本地clone方法,用于对象的赋值
protected native Object clone() throws CloneNotSupportedException;
//返回对象的的字符串表示,默认是:类名+@+hash值
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());

//notify()/notifyAll()/wait()以及wait两个重载方法都是线程同步相关方法
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 >= 500000 || (nanos != 0 && timeout == 0)) {
timeout++;
}
wait(timeout);
}
public final void wait() throws InterruptedException {
wait(0);
}

//对象被回收时调用,不管如何,一个对象只调用一次
protected void finalize() throws Throwable { }



可见object中拥有native,hashCode,euqals,clone,toString,wait,notify,notifyAll,finalize这几个方法,其中常用的方法有

equals,toString,以及线程中常常调用的wait,notify,notyfiAll方法。

另外:

源码中并没有Object的构造方法,但是,同样的,编译器在编译期间会给Object(事实上,所有的Java类,只要类中没有

构造方法,编译器都会默认的给一个空构造方法,若已有构造方法,则不会添加)一个默认的空的构造方法

public Object(){}

带有native修饰的都是本地方法,所谓的本地方法是不通过Java语言实现的方法,但可以通过JNI,像调用Java方法一样调用

这些方法。详细的可以搜索查看JNI。 这个方法的作用是对Object以下几个本地方法(hashCode/clone/notify等)进行注册

(可以理解为,这个方法是告诉JVM这几个本地方法的实现映射),每一个有本地方法的都会有这个方法,但其内容不一样

(因为注册的方法不一样嘛)。 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值