我们理解的抽象就是有某些特征抽象出来,就是提取特征功能,但功能自己没办法计算
抽象类:父类只定义有那些功能,但是不负责去实现这些功能,子类负责实现这功能,比如说形状类定义周长,面积,父类不负责去实现这些功能,只负责限定有这个功能,子类继承父类这个功能,就必须去实现这个功能。
object是所有类的父类
重要面试点
object类的九个方法
equals:两个句柄引用的地址是否相同,true 代表同一个地址,同一个引用对象
getclass:是反射获取类信息
hashCode:获取对象的散列码(散列代表无规律的分布,但相对均匀,大体上分布比较均匀通常用数组来实现散列,数组里面有规律的放数据)
notify:唤醒线程 也就是让线程从等待状态进入就绪状态
notifyAll:唤醒全部线程
toString:默认输出返回对象的类信息,以及对象地址
wait{}:让线程进入等待状态,也就是未就绪状态
Object类在JAVA里面是一个比较特殊的类,object默认继承所有方法
面试点:equals 的两个意思是什么
重写equals和未重写equals
两个不同对象的Hashcode一定不相等? 错误
HashCode不同 那么对象一定不等 也就是是两个不同的对象?正确
散列码( hash code ) 是由对象导出的一个整型值。散列码是没有规律的。如果 x 和 y 是两个不同的对象, x.hashCode( ) 与 y.hashCode( ) 基本上不会相同。
重写equals注意什么?
重写equals一定要重写hashcode
为什么?因为hashmap里面需要equals和hashcode 协同
equals判断两个对象值是否相等,然后由根据hashcode存储
问题:图5-2为什么s和t散列码相等
字符串重写equals,一定重写hashcode,重写equals相等了,所以重写hashcode也相等了
new Double().hashcode 这种定义方法是可以的,new完之后就回收了,不会再次被使用
也就是说堆里面对象如果没有任何地方记录它,就直接被回收了,比较节省内存
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)