1,object类概述
类 Object
是类层次结构的根类。每个类都使用 Object
作为超类。所有对象(包括数组)都实现这个类的方法。 在编码时,自动导入,而且在lang包中。
方法如下:
大致常用的方法有:equals方法,finalize,getClass,hashCode,notify等,toString,wait等
2,getClass()方法
改方法不能被重写,返回的时运行时的类型
3,hashCode()方法
1、功能返回对象的哈希值(以整数形式返回对象的一个特殊值),
提高集合中查找元素相等的效率!
2、特点
对象的哈希值 约等于 对象的地址号
3、推论
如果哈希值不一样,则两个对象肯定不一样!
4,finalize方法
自动垃圾回收机制原理:当应用已启动,实际上相当于开起了 主线程main和垃圾回收器线程
垃圾回收器将默默检测是否有需要回收的对象,一旦有了,则需要回收该对象以释放空间供其他有用对象使用,该对象被回收时同时调用finalize方法
1、回收哪些对象?
答:无用对象(没有任何引用指向的对象)
2、回收的时机?
答:不确定的
3、如何加速垃圾回收器的回收?
答:唤醒垃圾回收器
System.gc();
4、finalize方法什么时候被调用?
只要被回收,肯定被调用
5,toString方法☆(很重要)
1、功能返回对象的字符串形式。默认返回的是:全类名+@+哈希值的十六进制
public String toString(){
return getClass().getName()+"@"+Integer.toHexString(hashCode());
}
子类往往重写该方法
2、如何重写toString方法?
public String toString(){
return 属性信息;
}
3、好处:
打印方法和拼接字符串时,会自动调用对象的toString方法,提高代码的简洁性!
6,equals方法☆(很重要)
==和equals的对比== 可以判断基本类型或引用类型,不管判断什么类型的元素,都要求 左右两边的类型一致或兼容,否则编译报错
如果判断的是基本类型,则判断的是值是否相等。示例:100==‘d’ true 1.0==1 true
如果判断的是引用类型,则判断的是地址是否相等。示例:person1==person2 string1 == string2
equals 只能判断引用类型,可以判断任何引用类型,编译不会报错
Object类的equals:判断的就是地址是否相等!往往子类需要重写equals方法,实现判断内容是否相等。比如:String、Integer类等都重写了equals方法
*## 如何重写equals方法 ##*
public boolean equals(Object obj){//this:person1 obj:person4
//步骤1:两个对象的地址一样(提高效率)
if(this==obj)
return true;
//步骤2:判断对象的类型
if(!(obj instanceof Person)){//如果传入的obj不是Person类型,则直接返回
return false;
}
//步骤3:对象的向下转型
Person p = (Person) obj;//向下转型
//步骤4:判断内容是否相等
return this.name.equals(p.name)&&this.age==p.age;