java - 为什么我不能使用 '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 ?非常感谢您 。
解决方案
您的对象应该实现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]
推荐阅读
- splunk - Splunk -> 以毫秒为单位获取时间
- android - 如何选择正确的文字大小
- udp - Busybox 二进制文件的 Nmap 端口无法访问
- reactjs - 允许用户使用反应组件将模块添加到页面
- android-mediacodec - MTK 平台中的 Mediacodec 解码器问题?
- reactjs - 当我设置相同的状态值时,如何避免触发 useEffect?
- sql - MariaDB 如何处理已经系统版本化的表
- python - 能不能用pandas过滤亿万行数据
- javascript - 如何根据订单号通过文本删除特定的 Li 标签?
- html - 为什么这些框不能垂直对齐?