各位兄台懂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
------解决思路----------------------
改正之后代码如下:
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类中就是这个写的,所以打印出来的效果就是那个效果,并非乱码。你重写之后就可以指定自己想要的格式。
------解决思路----------------------
如果打印的结果不这样那就怪了,.next方法返回的是一个对象,你叫他怎么跟你打印出这个对象里面具体的值啊?你想要打印出里面具体的值方法有很多种,但是无论是什么方法都肯定有从对象中取属性的值的操作,如,stu.getName()!