Object类
-
超类、基类、所有类的直接或间接父类,位于继承树的最顶层
-
任何类,如没有书写extends显示继承某个类,都默认直接继承Object类,否则为间接继承
-
Object类中所定义的方法,是所有对象都具备的方法
-
Object类型可以存储任何对象
-
作为参数,可接受任何对象
-
作为返回值,可返回任何对象
-
getClass()方法
-
public final Class<?> getClass(){}
-
返回引用中存储的实际对象类型
-
应用:通常用于判断两个引用中世界存储对象类型是否一致
-
Student s1=new Student(24,"aaa"); Student s2 =new Student(20,"bbb"); //判断s1和s2是不是同一个类型 getClass Class class1=s1.getClass(); Class class2=s2.getClass(); if(class1==class2){ System.out.println("s1和s2属于同一个类型"); }else{ System.out.println("s1和s2不属于同一个类型"); } //结果:属于同一个类型
hashCode()方法
-
public int hashCode( ){ }
-
返回该对象的哈希码值
-
哈希值根据***对象的地址或==字符串==或数字***使用hash算法计算出来的int类型的数值
-
一般情况下相同对象返回相同哈希码
-
Student student1 = new Student(); Student student2 = new Student(); System.out.println(student1.hashCode());//460141958 System.out.println(student2.hashCode());//11631578814 Student student3=student1; System.out.println(student3.hashCode());//460141958
toString()方法
-
public String toString( ){ }
-
返回该对象的字符串表示(表现形式)
-
可以根据程序需求覆盖该方法,如:展示对象各个属性
-
Student student1 = new Student(); Student student2 = new Student(); System.out.println(student1.toString());//com.method.getclass.Student@1b6d3586 System.out.println(student2.toString());//com.method.getclass.Student@4554617c //toString方法重写 public String toString(){ return name+":"+age; }
equals()方法
-
public boolean equals(Object obj){ }
-
默认实现为(thisobj)比较两个对象地址是否相同==
-
可进行覆盖,比较两个对象的内容是否相同
-
public boolean equals(Object obj){ return (this==obj); }//判断当前对象和传入对象是否为同一对象
Student student1 = new Student(); Student student2 = new Student(); System.out.println(student1.equals(student2));//false
-
equals()方法覆盖步骤
-
比较两个引用是否指向一个对象
-
判断obj是否为null
-
判断两个引用指向的世界对象类型是否一致
-
强制类型转换
-
依次比较各个属性值是否相同
-
public boolean equals(Object obj) { //1.判断两个对象是否是同一个引用 if(this==obj){ return true; } //2.判断obj是否为空 if(obj==null){ return false; } //3.是否为同一个类型型 if(obj instanceof Student){ //4.强制类型转换 Student s=(Student)obj; //5.比较属性 if(this.name.equals(s.getName())&&this.age==s.getAge() ){ return true; } } return false; }
-
finalize()方法
-
对象被判定为垃圾对象时,由JVM自动调用此方法,用以表记垃圾对象,进入回收队列
-
垃圾对象:没有有效引用指向此对象时,为垃圾对象
-
垃圾回收:由GC销毁垃圾对象,释放数据控件
-
自动回收机制:JVM的内存耗尽,一次性回收所有垃圾对象
-
手动回收记住:使用System.gc();通知JVM执行垃圾回收
-
Student s1=new Student(22,"aaa"); Student s2=new Student(22,"bbb"); new Student(22,"ccc"); new Student(22,"ddd"); new Student(22,"eee"); //手动回收垃圾 System.gc(); System.out.println("回收垃圾"); /* 回收垃圾 ccc对象被回收了 eee对象被回收了 ddd对象被回收了 */