转换Person类型的对象toString()?

时间:2016-12-04 07:07:33

标签: java tostring

我试图在我的main方法中打印出包含int和两个字符串的Person的详细信息。我知道我要使用toString()方法,但我不记得如何使用此方法正确打印每个人的详细信息。我假设我必须在toString()课程中创建一个Person方法,但我不确定我必须在此中加入什么。在我的主要方法中,我已经把它:

System.out.println("Person: " + Person.Ben.toString());
System.out.println("Person: " + Person.Georgia.toString());
System.out.println("Person: " + Person.Tom.toString());
System.out.println("Person: " + Person.Beth.toString());

这里有什么可以完成这个?

public Person toString()
{
    //what goes here?
}

目前我收到了这个输出:

Person: coursework.Person$1@15db9742
Person: coursework.Person$2@6d06d69c
Person: coursework.Person$3@7852e922
Person: coursework.Person$4@4e25154f

感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:3)

您应该覆盖Object#toString。它的签名:

public String toString()

请注意,它会返回String,因此您应该执行以下操作:

@Override
public String toString()
{
    return this.name + " " + this.age;
}

当然你可以随意改进,我只是为了演示而写的。

值得一提的是你现在得到的输出的含义。正如文档中所述:

  

类Object的toString方法返回包含的字符串   对象是实例的类的名称,at-sign   字符'@',以及散列的无符号十六进制表示   对象的代码。换句话说,此方法返回一个相等的字符串   价值:

     

getClass().getName() + '@' + Integer.toHexString(hashCode())

答案 1 :(得分:1)

toString方法来自名为java.lang.Object的父类,其签名为public String toString(),因此您的toString应为:

@Override
public String toString() {
    StringBuilder sb = ...
    sb.append("Name: ");
    sb.append(name);
    sb.append("Age: ");
    sb.append(age);
    return sb.toString();
}

@Override注释用于覆盖超类的方法。