如何在java中使用重写的toString()方法

时间:2013-11-07 12:25:00

标签: java override tostring

我必须覆盖toString()方法,我已经这样做了如下

public String toString() {
     String str = "The zoo is capable of keeping " + park.length + "animals\nThe following is the list of animals currently in the zoo.";
        for(int i = 0; i < park.length; i++)
            str += '\n' + "cage " + i + " status: " + park[i];

        return str;
}

并创建了另一种打印此方法的方法

public void print() {
    System.out.println(park.toString());
}

不知何故,当我在main方法中使用print方法时,会出现以下内容

[LAnimal;@3a67ad79

现在,有人向我建议我可能实际使用默认的toString()方法,从而带来实际的地址内存。

你们认为这个问题是什么?

4 个答案:

答案 0 :(得分:2)

您无法覆盖toString数组,而是使用Arrays#toString

答案 1 :(得分:2)

从使用park.length和应用程序输出看来,parkAnimal类型的数组。 因此

System.out.println(park.toString());

应该是

System.out.println(Arrays.toString(park));

(因为Arrays不会覆盖Object#toString方法)

答案 2 :(得分:0)

您必须添加@Override

@Override public String toString() {
     String str = "The zoo is capable of keeping " + park.length + "animals\nThe following   is     the list of animals currently in the zoo.";
        for(int i = 0; i < park.length; i++)
            str += '\n' + "cage " + i + " status: " + park[i];

    return str;
}

答案 3 :(得分:0)

您正在park[i]方法

中打印toString()
str += '\n' + "cage " + i + " status: " + park[i];

                                          ^
                                          |_________ Here you are printing the Object