当我尝试打印出一个矢量元素时,我得到了这些奇怪的字符!

use*_*356 2 java syntax autoboxing

我正在使用Netbeans.当我运行下面的程序时,我将其作为输出[I@de6ced!怎么会?

import java.util.Arrays;
import java.util.Vector;

public class Test {

public static void main (String[] args) {
     int[] a = new int[1];
     a[0] = 5;
     Vector<Integer> a1 = new Vector(Arrays.asList(a));
     System.out.println(a1.elementAt(0));
 }
}
Run Code Online (Sandbox Code Playgroud)

我也试过解决它,但后来我得到了一个

线程"main"中的异常java.lang.ClassCastException:[我无法在TopCoder.Test.main(Test.java:13)中强制转换为java.lang.Integer Java结果:1

public static void main (String[] args) {
    int[] a = new int[1];
    a[0] = 5;
    Vector<Integer> a1 = new Vector(Arrays.asList(a));

    int b = a1.elementAt(0); /* EXCEPTION THROWN HERE */
    System.out.println(b);
}
Run Code Online (Sandbox Code Playgroud)

Kev*_*ose 6

[I@de6ced可细分为:
- [阵列
- I的整数
- de6ced与该参考哈希码(在的Sun Java,基本上是参考)

Object的toString()返回类似ClassName @ HashCode的东西,这正是你在这里看到的只是与(相当奇怪的)原始数组类发生的事情.

问题是该<T> List<T> asList(T...)方法推断出错误的类型.更改您的代码Integer[]而不是使用int[].这是int是原始的结果,但int []是一个对象.

你可以直接看到这个:

System.out.println(Arrays.asList(new int[]{5}));
Run Code Online (Sandbox Code Playgroud)

=> [[I@一些参考

System.out.println(Arrays.asList(new Integer[]{5}).get(0));
Run Code Online (Sandbox Code Playgroud)

=> 5