使用迭代器打印乱码问题(System.out.println(iterator.next());)

ni__hao 2015-09-21 12:25:51
各位兄台懂Java的帮忙看看,这个程序为什么打印的结果是乱码????
求帮忙解答.初学Java.
本人没有太多之分,希望好心解答一下.

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class array {

public static void main(String[] args) {
ArrayList<Student> al=new ArrayList();

for(int i=0;i<10;i++)
{
al.add(new Student("天涯沦落人"+i,"nan"));
}
Iterator iterator=al.iterator();

while(iterator.hasNext())
{
System.out.println(iterator.next());
}

}
}

class Student{
public String name;
public String sex;
public Student(String name,String sex)
//public Student(String name)
{
this.name=name;
this.sex=sex;
}
}

打印结果是:
Student@52aaf3d2
Student@556d8a64
Student@a98d70d
Student@384e9bea
Student@30de3c87
Student@4e57dc21
Student@6a3522b5
Student@4679cf8c
...全文
208 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ni__hao 2015-09-21
  • 打赏
  • 举报
回复
改了,结果还是一样,乱码.................
qq_20062767 2015-09-21
  • 打赏
  • 举报
回复
修改一下代码:ArrayList<Student> al=new ArrayList();==========>>>ArrayList<Student> al=new ArrayList<Student>();
helloworld1993 2015-09-21
  • 打赏
  • 举报
回复
如果打印的结果不这样那就怪了,.next方法返回的是一个对象,你叫他怎么跟你打印出这个对象里面具体的值啊?你想要打印出里面具体的值方法有很多种,但是无论是什么方法都肯定有从对象中取属性的值的操作,如,stu.getName()!
ni__hao 2015-09-21
  • 打赏
  • 举报
回复
你好像不太理解我的意思,我想要的结果是这样: 天涯沦落人1 nan 天涯沦落人2 nan 天涯沦落人3 nan 天涯沦落人4 nan 天涯沦落人5 nan
code小生 2015-09-21
  • 打赏
  • 举报
回复
改正之后代码如下:
import java.util.ArrayList;
import java.util.Iterator;

public class ArrayListTest {

	public static void main(String[] args) {
		ArrayList<Student> al = new ArrayList<Student>();

		for (int i = 0; i < 10; i++) {
			al.add(new Student("天涯沦落人" + i, "nan"));
		}
		Iterator iterator = al.iterator();

		while (iterator.hasNext()) {
			System.out.println(iterator.next());
		}
	}
}

class Student {
	public String name;
	public String sex;

	public Student(String name, String sex) {
		this.name = name;
		this.sex = sex;
	}

	@Override
	public String toString() {
		return "Student [name=" + name + ", sex=" + sex + "]";
	}
}
在没有重写toString()方法的时候,默认调用的是Object类中的toString()方法,而这个方法在Object类中就是这个写的,所以打印出来的效果就是那个效果,并非乱码。你重写之后就可以指定自己想要的格式。
XBC123456789 2015-09-21
  • 打赏
  • 举报
回复
@后的乱码是哈希码………

50,634

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧