18:Object类
Object类
Java Object 类是所有类的父类,也就是说 Java 的所有类都继承了 Object,子类可以使用 Object 的所有方法。
Object 类位于 java.lang 包中,编译时会自动导入,我们创建一个类时,如果没有明确继承一个父类,那么它就会自动继承 Object,成为 Object 的子类。
Object 类可以显示继承,也可以隐式继承,格式如下:
显示继承:
public class Demo02Object extends Object {
}
隐式继承:
public class Demo02Object {
}
Object 的 toString 方法
Object toString() 方法用于返回对象的字符串表示形式。语法如下
object.toString()
返回值:
返回对象的字符串表示形式。
默认返回格式:对象的 class 名称 + @ + hashCode 的十六进制字符串。
例:
package com.itlb.array;
public class Demo02Object {
public static void main(String[] args) {
Person p = new Person("张三");
String s = p.toString();
System.out.println(s); //直接打印,打印地址值
System.out.println(p); //直接打印,打印地址值
}
}
class Person{
private String name;
//直接打印没有意义,需要重写Object类中的toString方法;打印对象属性name
@Override
public String toString() {
return name;
}
public Person(String name) {
this.name = name;
}
}
运行结果:
张三
张三
Object 的 equals方法
Object equals() 方法用于比较两个对象是否相等。
equals() 方法比较两个对象,是判断两个对象引用指向的是同一个对象,即比较 2 个对象的内存地址是否相等。
注意:如果子类重写了 equals() 方法,就需要重写hashCode() 方法。比如 String 类就重写了 equals() 方法,同时也重写了 hashCode() 方法。
语法如下:
object.equals(Object obj)
参数
- obj - 要比较的对象。
返回值
如果两个对象相等返回 true,否则返回 false。
public class Deno03 {
public static void main(String[] args) {
// Object 类使用 equals() 方法
// 创建两个对象
Object obj1 = new Object();
Object obj2 = new Object();
// 判断 obj1 与 obj2 是否相等
// 不同对象,内存地址不同,不相等,返回 false
System.out.println(obj1.equals(obj2)); // false
// obj1 赋值给 obj3
// String 重写了 equals() 方法
// 对象引用,内存地址相同,相等,返回 true
Object obj3 = obj1;
System.out.println(obj1.equals(obj3)); // true
}
}
运行结果:
false
true