为什么用for遍历输出来是那种地址乱码,老师又要求必须用这种输出方式,谢谢帮忙看看
3条回答 默认 最新
- 穆瑾轩 2021-10-31 11:47关注
你打印的是对象,自定义类默认都继承了Object类,直接打印对象,其实调用的是:Object的toString()方法, getClass().getName() + "@" + Integer.toHexString(hashCode());即类名+内存地址。如果需要自定义打印内容,需要在Book类中重写toString(),即可打印自己想要的效果。
System.out.println(Object obj) 源码如下:public void println(Object x) { String s = String.valueOf(x); if (getClass() == PrintStream.class) { // need to apply String.valueOf again since first invocation // might return null writeln(String.valueOf(s)); } else { synchronized (this) { print(s); newLine(); } } } // String.valueOf(Object obj) public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); } //obj.toString() public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
- ¥500 52810做蓝牙接受端
- ¥15 基于PLC的三轴机械手程序
- ¥15 多址通信方式的抗噪声性能和系统容量对比
- ¥15 winform的chart曲线生成时有凸起
- ¥15 msix packaging tool打包问题
- ¥15 finalshell节点的搭建代码和那个端口代码教程
- ¥15 Centos / PETSc / PETGEM
- ¥15 centos7.9 IPv6端口telnet和端口监控问题
- ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作