java源码Object类解析

Object类解析
转载自:http://ihenu.iteye.com/blog/2233249
1.在Java应用程序的一次执行到另外一次执行,同一对象的hashCode()返回的哈希码无须保持一致;
2.如果两个对象相等(依据:调用equals()方法),那么这两个对象调用hashCode()返回的哈希码也必须相等;(因为就是通过hashcode比较的)
3.严格的数学逻辑表示为: 两个对象相等 <=>  equals()相等  => hashCode()相等。因此,重写equlas()方法必须重写hashCode()方法,以保证此逻辑严格成立,同时可以推理出:hasCode()不相等 => equals()不相等 <=> 两个对象不相等。
4.两个对象哈希码值相等,这两个对象不一定相等(obj.2+obj.2=obje.1+obje.3     obj!=obje)
5.理论上任何对象都可以视为线程同步中的监听器,且wait(...)/notify()|notifyAll()方法只能在同步代码块中才能使用。故Object中有这些类.
6.Object类中finalize方法被定义成一个空方法,为什么要如此定义呢?
有时候父类finalize方法里有东西,但是子类把父类方法覆盖了,导致父类方法不会执行,这种怎么解决?
方法1。
@Override  
		protected void finalize() throws Throwable(){  
			try{  
			//finalize subclass state  
			}finally{  
			super.finalize();  
			}  
		}


方法2. 父类被回收的时候,内部的匿名类也一定被收回,那匿名内部类的finalize方法不管子类怎么搞都不会受影响的。是不是很巧妙。
public class Super{  
				private final Object finalizerGuardian=new Object(){  
					@Override  
					protected void finalize() throws Throwable(){  
					//Super.this.close();  
					}  
				}  	  
			}  







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值