Java中的Object

0 阅读1分钟

Object是Java中的顶级父类,所有的类直接或间接的继承于Object类。

Object常用的成员方法:

image.png

1. toString方法

public class Main {
    public static void main(String[] args) {
        Object obj = new Object();
        String str = obj.toString();
        System.out.println(str);        // 输出:java.lang.Object@1eb44e46
    }
}

1eb44e46对象的内存地址。

打印任何对象,打印的都是这个对象的内存地址:

比如下面是Student的JavaBean:

public class Student {
    private String name;
    private Integer age;

    public Student() {

    }

    public Student(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
}
public class Main {
    public static void main(String[] args) {
        Student stu = new Student("akbar", 24);
        String str = stu.toString();           // toString是stu父类Object的成员变量
        System.out.println(str);               // 输出:Student@6504e3b2
    }
}

但是地址值对我们来说是没有意义的,怎么解决?

我们只要重写一下父类Object中的toString方法就可以了:

public class Student {
    private String name;
    private Integer age;

    public Student() {

    }

    public Student(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + ''' +
                ", age=" + age +
                '}';
    }
}
public class Main {
    public static void main(String[] args) {
        Student stu = new Student("akbar", 24);
        String str = stu.toString();           
        System.out.println(str);
    }
}

输出:

Student{name='akbar', age=24}

2. equals方法

public class Main {
    public static void main(String[] args) {
        Student stu1 = new Student("akbar", 24);
        Student stu2 = new Student("saipulla", 14);

        boolean equals = stu1.equals(stu2);

        System.out.println(equals);
    }
}

输出:false

上面的代码中stu1调用的就是父类Object中的方法equals。但是要注意,这个equals比较的是两个对象的地址值,不是属性值,如果需要比较属性值,需要重写父类Object的equals方法:

image.png 然后一致点next就可以自动生成equals方法。