`java.lang.Object` 类是Java语言中的根类,即所有类的父类。Object类的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。
如果一个类没有特别指定父类, 那么默认则继承自Object类,例如:
public class ObjectDemo /*extends Object*/{
// ...
}
这里简单介绍Object中的toString和equals方法
toString
toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。
由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。
-
新增一个Person类,并重写toString方法
** * 新建一个Person类 * */ public class Person { private String name; private int age; //无参构造 //有参构造 //get,set方法 //重写toString方法 @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
-
举例
public static void main(String[] args) { Person person = new Person(); person.setName("张三"); person.setAge(18); //打印结果: //1. 如果Person类中没有重写toString方法,打印结果为地址值; //2. 如果Person类重写了toString方法,打印结果为person类的内容: Person{name='张三', age=18}; System.out.println(person); }
equals
equals作用是比较两个对象是否相等,底层是比较运算符"==",返回的是一个布尔值 true false,对于基本数据类型,比较的是值,对于引用数据类型,比较的是地址值
- 在Person类中重写equals方法
** * 新建一个Person类 * */ public class Person { private String name; private int age; //无参构造 //有参构造 //get,set方法 //重写equals方法 @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; return age == person.age && Objects.equals(name, person.name); } }
- 举例
public static void main(String[] args) { Person person1 = new Person(); person1.setName("张三"); person1.setAge(18); Person person2 = new Person(); person2.setName("张三"); person2.setAge(18); boolean equals = person1.equals(person2); //当没有重写equals方法时,对比的是地址值,打印结果为false //重写equals方法后,对比的是对象的值,打印结果为true System.out.println(equals); }