目录
(1)不重写Object中toString和 equals的例子
( 2)重写Object中toString和 equals的例子
1:Object类概述
类层次结构的根类
所有类都直接或者间接的继承自该类
是java.lang包下的类不用导包
2:构造方法
public Object()
3:Object类的成员方法
public int hashCode()返回对象的哈希码值,十进制地址值如HashMap提供的那样
public final Class getClass()返回此Object的运行时类返回的是一个数据类型为Class的值
public String toString()该toString类方法Object返回一个由其中的对象是一个实例,该符号字符`的类的名称的字符串@ ”和对象的哈希码的无符号的十六进制表示l但是没有任何意义我们要自己重写这个方法得到我们想要的结果
public boolean equals(Object obj)Object类中默认比较的是地址若是需要可以重写方法
Class类中的方法:
public String getName()
返回由类对象表示的实体的名称(类,接口,数组类,原始类型或void),作为String 。
Integer类中提供了一个静态的方法:
public static String toHexString(int i):
返回整数参数的字符串表示形式,作为16位中的无符号整数。
protected void finalize()当垃圾收集确定不再有对该对象的引用时,垃圾收集器在对象上调用该对象。
protected Object clone()创建并返回此对象的副本。返回的是这个实例的一个克隆,被Object类接收
Interface Cloneable使用clone方法必须实现这个接口
但是我们通过观察API发现,该接口没有任何抽象方法,那么实现这个接口有什么意义呢?
如果没有重写该接口就直接调用,会报错CloneNotSupportedException
像这样没有任何方法的接口我们称之为标记接口
4:例子
(1)不重写Object中toString和 equals的例子
package proctice3;
class Student5 extends Object{//定义一个学生类继承Object类
}
public class Text10 {
public static void main(String[] args) {
Student5 s1 = new Student5();//创建学生对象
Student5 s2 = new Student5();//创建学生对象
//调用Object的hashCode方法
System.out.println(s1.hashCode());
//调用Object的getClass方法
System.out.println(s1.getClass());
//调用Object的toString方法
System.out.println(s1.toString());
//调用Object的equals方法
System.out.println(s1.equals(s2));
}
}
( 2)重写Object中toString和 equals的例子
package proctice3;
import java.util.Objects;
class Student5 extends Object{//定义一个学生类继承Object类
private int age;
private String name;
public Student5() {
}
public Student5(int age, String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//重写Object中的HashCode,toString,equals方法
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student5 student5 = (Student5) o;
return age == student5.age &&
Objects.equals(name, student5.name);
}
@Override
public int hashCode() {
return Objects.hash(age, name);
}
@Override
public String toString() {
return "Student5{" +
"age=" + age +
", name='" + name + '\'' +
'}';
}
}
public class Text10 {
public static void main(String[] args) {
Student5 s1 = new Student5(20,"小华");//利用有参构造创建学生对象
Student5 s2 = new Student5(18,"小亮");//创建学生对象
//调用Object的hashCode方法
System.out.println(s1.hashCode());
//调用Object的getClass方法
System.out.println(s1.getClass());
//调用Object的toString方法
System.out.println(s1.toString());
//调用Object的equals方法
System.out.println(s1.equals(s2));
}
}