转换类型的人toString()的对象



我正在尝试打印出我主要方法中包含int和两个字符串的Person的详细信息。我知道我可以使用toString()方法,但我不记得我将如何使用此方法正确打印每个人的详细信息。我假设我必须在Person类中创建toString()方法,但是我不确定必须投入其中的内容。在我的主要方法中,我已经说了:

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

任何帮助将不胜感激,谢谢。

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

public String toString()

请注意,它返回String,因此您应该做类似:

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

当然,您可以按照您的意愿进行改进,我只是为了演示而写。


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

类对象的toString方法返回一个由组成的字符串 对象为实例的类的名称,即符号 角色"@"和哈希的未签名十六进制表示 对象的代码。换句话说,此方法返回一个平等的字符串 至:

的价值

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

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注释用于覆盖超类的方法。

最新更新