java的输出问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 08:08:43
class Student{
}
class Test{
public static void main(String[] args){
int[]n={1,2,3,4};
java.util.Vector vector=new java.util.Vector();
Student student=new Student();
vector.add("abc");
vector.add("mno");
System.out.println(n);
System.out.println(vector);
System.out.println(student);
}

}
为什么第一个会输出地址,第二个输出的是[abc,mno],第三个输出的也是地址,vector和student不都是地址的引用吗??都应该输出地址!

建议多看看书.
其实书上都有讲的.
System.out.println()是会自动调用对象的toString()方法的,在Vector类中重写了toString(),你只要在Student类中自己重写toString()就可以输出自己想要的结果了.

另外输出的不是地址
public String toString()返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂。建议所有子类都重写此方法。
Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:

getClass().getName() + '@' + Integer.toHexString(hashCode())

返回:
该对象的字符串表示形式。

vector
是一个容器 你是学过C的吧?

因为Vector实现了Iterable接口,凡是实现了Iterable接口的对象就可以被迭代.Student是你没覆盖它的toString方法,所以默认打的是地址