数组返回内存分配而不是Java中的值

hay*_*onj 0 java arrays for-loop casting output

考虑一个像这样的简单案例:

public static void array()
{
    String myString = "STACKOVERFLOW";
    int [] checkVal = new int[myString.length()];

    for(int i=0; i<myString.length();i++){
        checkVal[i] = (int)myString.charAt(i);
    }

    System.out.println(checkVal[0]);
    System.out.println(checkVal[1]);
    System.out.println(checkVal[2]);
    System.out.println(checkVal[3]);
    System.out.println(checkVal[4]);
    System.out.println(checkVal);
}
Run Code Online (Sandbox Code Playgroud)

这将输出以下内容:

83
84
65
67
75
[I@fc9944
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释一下吗?如何从Array中检索正确的信息而不是内存分配?

zw3*_*324 8

如果你想要它打印漂亮,请使用Arrays.toString它:

System.out.println(Arrays.toString(checkVal);
Run Code Online (Sandbox Code Playgroud)

如果没有,它将只打印出toString继承自的数组Object,并生成String包含其类型和哈希码的数组:

类Object的toString方法返回一个字符串,该字符串由对象为实例的类的名称,符号字符"@"和对象的哈希码的无符号十六进制表示组成.换句话说,此方法返回一个等于值的字符串:

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

这个答案也有相关信息.