Object类详解

Object类似所有类的父类,所有对象(包括数组)都实现了这个类的方法

Object类中的方法如下:

getClassclonenotifynotifyAllwait是本地方法

hashCode方法也是本地方法:hashCode方法的结果必须和equals方法的结果一致。在Object类中equals方法与“==”的功能一样,都是比较对象的在堆中的地址。但是在某些子类中如String类中,equals方法是被重写过的,用来比较对象的内容,根据hashCode方法的要求,我们必须在String类中对hashcode方法进行重写。但是hashcode相等的对象,equals却不一定相等。

Equals方法在object类中与“==”是一样的。

toString方法默认返回一个字符串,这个字符串由类名加“@”加对象的hashCode组成。比如:Test@12343

Finalize方法在Object类中比没有内容,这个方法在java决定进行垃圾回收之前会自动调用并且一个对象的Finalize方法只能被调用一次。

下面用一个例子来分析Finalize方法:

public class Test{
	static B b;
	public static void main(String[] args) throws Exception{
		Test.b=new B();
		System.out.println("第一次打印"+Test.b.toString());//
		Test.b=null;
		System.gc();//执行内存清理,但是在调用finalize方法的时候,对象拯救了自己,因此不会进行堆内存的回收
		Thread.sleep(5000);//这里必须要进行休眠,因为finalize方法优先级很低,不休眠的话,finalize方法可能不会被执行
		System.out.println("第二次打印"+Test.b.toString());
		Test.b=null;
		System.gc();//执行到这里的时候finalize方法不会被执行,因为一个对象的finalize方法只能被执行一次,因此Test.b依然为null
		Thread.sleep(5000);
		System.out.println("第三次打印"+Test.b.toString());//出现空指针异常
	}	
}
class  B{
	@Override
	protected void finalize() throws Throwable {
		super.finalize();
		Test.b=this;
		System.out.println("finalize");		
	}
}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值