打印含PackOfCrisps类元素的数组出现异常值,调用toString()报错求助
解决打印PackOfCrisps对象显示类名@哈希码的问题
为什么会出现PackOfCrisps@653f6b99这种输出
所有Java类默认继承自Object类,Object的toString()方法默认输出格式是类名@对象哈希码的十六进制值,所以直接打印PackOfCrisps对象时,就会看到这种无意义的默认输出。
重写PackOfCrisps类的toString()方法
要让打印内容有实际意义,你需要在PackOfCrisps类里重写toString()方法,自定义输出格式。示例代码如下:
public class PackOfCrisps { // 替换成你实际的类属性 private String flavor; private int netWeight; // 构造方法、Getter/Setter方法根据你的需求添加 @Override public String toString() { return "PackOfCrisps[口味: " + flavor + ", 净含量: " + netWeight + "g]"; } }
- 加上
@Override注解能帮你检查是否正确重写了Object的toString()方法(比如方法名拼写错误、返回类型不对时,编译器会直接报错) - 你可以根据自己类的属性,自由定义返回的字符串内容,让打印结果更直观。
关于调用toString()提示无法转换为字符串的问题
大概率是你没有正确重写toString()方法:
- 检查方法名拼写是否正确(必须是
toString,首字母为小写t) - 确保方法返回类型是
String - 确认添加了
@Override注解,编译器会帮你排查重写逻辑错误
重写完成后,遍历数组打印每个元素时,直接打印对象或者调用toString()都能得到自定义的内容:
PackOfCrisps[] crisps = new PackOfCrisps[2]; crisps[0] = new PackOfCrisps("原味", 50); crisps[1] = new PackOfCrisps("烧烤味", 60); // 遍历打印每个元素 for (PackOfCrisps pack : crisps) { System.out.println(pack); // 等价于System.out.println(pack.toString()); }
内容的提问来源于stack exchange,提问作者eeee
相关产品推荐
相关产品推荐

