这是代码的片段
public class Test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
char[] a={'a','b','c',97,'a'};
System.out.println(a);
int[] a1={8,6,7};
System.out.println(a1);
Integer[] b={10,20,30};
System.out.println(b);
}
}
Run Code Online (Sandbox Code Playgroud)
这是输出
abcaa
[I@239d5fe6
[Ljava.lang.Integer;@5527f4f9
Run Code Online (Sandbox Code Playgroud)
我知道它必须处理toString()方法.它已在char中重写以返回值.因此我们得到的第一个输出正如预期的那样是被重写的toString()方法java.lang.Character..
public String toString() {
char buf[] = {value};//The value of the Character.
return String.valueOf(buf);
}
Run Code Online (Sandbox Code Playgroud)
但是看看Integer还有被覆盖的toString()方法
public String toString() {
return String.valueOf(value); //The value of the Integer.
}
Run Code Online (Sandbox Code Playgroud)
那么为什么打印a1和b代码会调用toString()Object类的默认实现,即:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
Run Code Online (Sandbox Code Playgroud)
此外,由于valueOf生成另一个Object,但它在两个重写的方法中都很常见.
因为有一个打印char数组的专用方法:
https://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html#println(炭[])
public void println(char[] x)打印一个字符数组,然后终止该行.此方法的行为就像它调用
print(char[])然后println().参数:
x- 要打印的字符数组.
执行:
Run Code Online (Sandbox Code Playgroud)public void println(char x[]) { synchronized (this) { print(x); newLine(); } }
它与类的toString实现无关char[].
| 归档时间: |
|
| 查看次数: |
633 次 |
| 最近记录: |