Android开发:ArrayList遍历输出Student对象显示哈希值而非内容求助
解决打印Student对象显示哈希值的问题
嗨,我来帮你搞定这个问题!你现在看到的com.example.com.arraylist.Student@d6765f3这类字符串,其实是Java对象默认toString()方法的输出结果。因为你的Student类没有重写这个方法,所以会使用父类Object的默认实现——它就是把类名、@符号和对象的哈希码拼在一起输出,自然看不到你想要的学生具体信息啦。
下面给你两种简单的解决办法,都能配合你现有的for循环实现正常显示:
方法一:重写Student类的toString()方法(推荐)
这是最优雅的处理方式,修改你的Student类,添加自定义的toString()方法,指定对象的字符串表现形式:
package com.example.com.arraylist; public class Student { int Enrno; String Name; public Student(int Enrno, String Name){ this.Enrno=Enrno; this.Name=Name; } // 重写toString方法,自定义对象打印内容 @Override public String toString() { return "学生信息:学号=" + Enrno + ", 姓名='" + Name + "'"; } }
修改完成后,你原来的for循环完全不用改动,直接打印a就会输出每个学生的具体信息,比如:
学生信息:学号=1, 姓名='Rahul' 学生信息:学号=2, 姓名='Rajiv' 学生信息:学号=3, 姓名='Rohan'
方法二:在循环中直接访问对象属性打印
如果你不想修改Student类,也可以直接在循环里读取对象的Enrno和Name属性,手动拼接输出内容:
for(Student a:studentArrayList) System.out.println("学号:" + a.Enrno + ",姓名:" + a.Name);
这样也能得到你想要的实际内容输出。
内容的提问来源于stack exchange,提问作者Humming Bird
相关产品推荐
相关产品推荐

