山无处不在,我们都还在山脚下。 ——《时间移民》
今日内容 — Object类,作为类家族中特殊的存在,我称它为祖宗类,所有类都继承了它,想想都累。本文简单介绍其作用以及常用的方法,带你走进奇妙的世界,如有错误,欢迎指正。
方法名 | 描述 |
---|---|
public final Class<?> getClass() | 返回此 Object 的运行时类。 |
public int hasCode() | 返回该对象的哈希码值。 |
public String toString() | 返回该对象的字符串表示。 |
public boolean equals(Object obj) | 指示其他某个对象是否与此对象“相等”。 |
protected void finalize() throws Throwable | 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。 |
public final Class<?> getClass(){}
返回引用中存储的实际对象类型。
应用:通常应用于判断两个引用中实际存储对象类型是否一只致。
public int hasCode(){}
int
类型的数值。public String toString(){}
public boolean equals(Object obj){}
protected void finalize() throws Throwable{}
当对象被判定为垃圾对象时,由JVM自动调用此方法,用以标记垃圾对象,进入回收对列。
import java.util.Objects; public class Main{ public static void main(String args[]){ Student a = new Student("小明",15); Student b = new Student("李华",16); Student c=new Student("小明",15); Student d=a; //getClass()方法 System.out.println("getClass():"); if(a.getClass() == b.getClass()){ System.out.println("a和b为同一类型"); }else{ System.out.println("a和b为不是同一类型"); } //hasCode()方法 System.out.println("hasCode():"); System.out.println("a:"+a.hashCode());// System.out.println("b:"+b.hashCode()); System.out.println("c:"+c.hashCode()); System.out.println("d:"+d.hashCode()); //toString() //System.out.println("未重写toString()方法:"); System.out.println("重写toString()方法后:"); System.out.println(a.toString()); System.out.println(a);//对象输出时调用Object类中的toString()方法 //equals()重写前 //System.out.println("重写equals()前:"); System.out.println("重写equals()后:"); System.out.println("a与b比较:"+a.equals(b)); System.out.println("a与c比较:"+a.equals(c));//注意重写前比较的为hasCode(地址) System.out.println("a与d比较:"+a.equals(d)); } } class Student{ private String name; private int age; public Student(String name,int age){ this.name = name; this.age = age; } public Student(){ this("",0); } @Override public String toString() {//重写toString()方法 return "name=" + name + "age=" + age; } @Override public boolean equals(Object o) {//重写equals()方法 if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } Student student = (Student) o; return age == student.age && Objects.equals(name, student.name); } }
重写toString()、equals()方法前运行结果:
重写toString()、equals()方法后运行结果: