import java.util.Arrays;
class B {
int i;
B(int i) {
this.i = i;
}
public String toString() {
return "i = " + this.i;
}
}
public class MainClass{
public static void main(String[] args) {
B [] x = new B[2];
x[0] = new B(90);
x[1] = new B(100);
B obj = new B(10);
System.out.println(obj);
System.out.println(x);//toString method of class B is not called here.
}
}
//当我打印obj时,调用了B类的toString方法,但是当我尝试打印x时,它没有被调用。可以解释为什么!!!
答案 0 :(得分:1)
实际上,Array类的toString
方法被调用,而Array不会覆盖对象toString()
- 所以你得到一个类名和(基本上)一个引用地址。你想要的可能是Arrays.toString(Object[]) - 就像这样,
// System.out.println(x); // <-- calls toString of java.lang.Array
System.out.println(Arrays.toString(x));
答案 1 :(得分:0)
Java不会自动在数组成员上调用toString
。如上所述here,您需要Arrays.toString(x)
。
答案 2 :(得分:0)
这是因为你打印的是数组本身,而不是数组的各个元素。数组也是对象,但它们不会覆盖toString()
from Object
。尝试
System.out.println(Arrays.toString(x));