首页 > 解决方案 > 为什么我不能使用 'tostring' 打印?我如何打印包含类的 arry?

问题描述

public String toString() { // 这是另一个类

    String Cubes = "+";

    for(int i = 0; i < CubesStack.length;) {
        Cubes = Cubes + CubesStack[i].toString();
    }

    return "maxCubes = " + this.maxCubes + "\n" +

            "currentCubes = " + this.currentCubes + "\n" + 

            "CubesStack = " + Cubes; 

}

public class MainMain { // 这是主要的

public static void main(String[] args) {
    // TODO Auto-generated method stub
    cubesTower tower1 = new cubesTower(20);
    System.out.println(tower1.toString());
}

}

为什么我不能使用 'tostring' 打印?我如何打印包含类的 arry ?非常感谢您 。

标签: javatostring

解决方案


您的对象应该实现toString()方法,否则它将采用java.lang.Object的 toString() 的默认实现。

java.lang.Object 默认实现是

public String toString() {
   return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

所以你必须重写 toString() 来获取你自己的值

例如: 这里我有Name类,它有两个属性

class Name {
    private String firstName;
    private String lastName;
    public Name(String firstName, String lastName) {
        super();
        this.firstName = firstName;
        this.lastName = lastName;
    }
    @Override
    public String toString() {
        return "Name [firstName=" + firstName + ", lastName=" + lastName + "]";
    }

}
public static void main(String[] args) {
    Name[] names = new Name[]{new Name("john","doe"),new Name("john1","doe1")};
    System.out.println(names[0]);
}

如果我不覆盖 toString() 则输出:com.stackovflow.problems.Name@33909752

实现 toString()输出后:名称 [firstName=john, lastName=doe]


推荐阅读