gpt4 book ai didi

java - 为什么打印 Integer array Object 给出哈希码而 char array object 在 java 中给出值?

转载 作者:搜寻专家 更新时间:2023-11-01 02:07:06 25 4
gpt4 key购买 nike

<分区>

这是代码片段

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);
}
}

这是输出

abcaa
[I@239d5fe6
[Ljava.lang.Integer;@5527f4f9

我知道它必须处理 toString() 方法。它已在 char 中被覆盖以返回值。因此我们得到了预期的第一个输出这是 java.lang.Character 的重写 toString() 方法 ..

public String toString() {
char buf[] = {value};//The value of the Character.
return String.valueOf(buf);
}

但是看看 Integer 也有重写的 toString() 方法

public String toString() {
return String.valueOf(value); //The value of the Integer.
}

那为什么打印a1和b的代码会调用Object类默认的toString()实现,即:

public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

此外,由于 valueOf 生成了另一个对象,但它在两个重写方法中都很常见。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com