java重写toString()方法

Posted sheng-sjk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java重写toString()方法相关的知识,希望对你有一定的参考价值。

  toString()方法是Object类的方法,调用toString()会返回对象的描述信息。

  1)为什么重写toString()方法呢?

  如果不重写,直接调用Object类的toString()方法,打印的是该对象的内存地址(类名@哈希码值)。如下代码所示:

class Person {
    String name;
    String sex;
    int age;
    public Person() {}
    public Person(String name, String sex, int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }
}

class Demo {
    public static void main(String[] args) {
        Person p = new Person();
        System.out.println(p);
    }
}

运行结果:[email protected]

  从上面代码可知,调用p的toString方法,打印出来的信息是类名+内存地址值。不符合要求。根据我们之前学的继承,假如父类的指定的功能能不能满足要求,那么子类可以复写父类的功能函数,那么该对象再调用toString()方法时,则会调用子类复写的toString方法。

  (2)一般什么时候重写toString方法?

  一般在编写代码,POJO类必须重写toString方法。如果继承了另一个POJO类,注意在前面加一下super.toString。

  POJO(Plain Ordinary Java Object)即普通的java类,具有一部分getter/setter方法的那种类就可以称作为POJO类。重写toString()方法后,在方法执行跑出异常时,可以直接调用POJO的toString()方法打印其属性值,便于排查问题。

  (3)如何重写toString()?

  toString()方法重写代码样例如下: 

class Person {
    String name;
    String sex;
    int age;

    public Person() {
    }

    public Person(String name, String sex, int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }
@Override
public String toString() { return "Person [name=" + name + ", sex=" + sex + ", age=" + age + "]"; } }

  编程习惯:开发者要对自定义的类重写toString(),对对象做详细的说明。

以上是关于java重写toString()方法的主要内容,如果未能解决你的问题,请参考以下文章

java重写toString方法

为啥要重写toString方法和hashcode方法

Java类库中需要重写的方法

java 基础中 toString方法重写

java对象重写toString方法

Effective Java 第三版——12. 始终重写 toString 方法