自学java有点问题请教一下各位
关于数组对象引用有点问题
我想要输出这几个数组里面的值 并不是我自己手动输入 而是一串乱码
重写student的tostring()方法。在里面手动输出几个属性的值。就可以了。
首先这个不是乱码,你直接打印对象都是打印的这些东西。 类名 + @ + 一串16进制的字符串 。 要打印里面的值的话可以考虑 重写 toString 方法
你的Student类中缺少toString()方法,
public String toString() {
return "Student [name=" + name + ", address=" + address + ", age=" + age + ", gerrand=" + gerrand + "]";
}
这不是乱码
这就是对象的形式
其实是你获取的不对,还差一步
Student@15db9742 是以获取的对象,
然后你要的不是对象的这种形式,而是对象的数据形式
通过对象的get 方法获取就行了
Student stu = null;
stu = student[i] ; //数组中第 i 个Student 对象
System.out.println(stu.name);
你试试
用开发工具自动生成toString()方法,类似如下不明白所说的乱码是什么意思?是传递的数据乱码,还是最终显示的数据乱码?
public String toString() {
return "Student [name=" + name + ", address=" + address + ", age=" + age + ", gerrand=" + gerrand + "]";
}
public class Student {
private String name;
private String address;
private int age;
private int gerrand;
public Student(String name, String address, int age, int gerrand) {
this.name = name;
this.address = address;
this.age = age;
this.gerrand = gerrand;
}
public String toString() {
return name+" "+address+" "+age+" "+gerrand;
}
public static void main(String[] agrs){
Student[] student=new Student[]{new Student("张三","济南",20,12)};
for(int i=0;i<student.length;i++){
System.out.println(student[i]);
}
}
}
这样就可以了
主要是加一个toString方法
自动生成 toString() 方法 Alt+shift+S 选中 Generate toString() 接着全勾上白框里的 按ok就可以了
重写toString方法就可以了。为什么要从写toString方法了?
可以查看println的源码,里面调用了String.valueOf(x);
而String.valueOf()方法调用了Object的toString方法,
源码是:return (obj == null) ? "null" : obj.toString();
toString方法默认输出“对象实例名称”+@+“对象所在的内存地址”,所以需要重写toString()方法。
system.out.println(student[i].name);试一试能出来么? 你输出的是一个对象,就是那种形式的,你应该你输出对象中的属性才对吧