java - 当我尝试打印 vector 元素时,我得到这些奇怪的字符!

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

我也尝试过解决这个问题,但后来我得到了一个

线程“main”中的异常 java.lang.ClassCastException: [我无法转换为 java.lang.Integer 在 TopCoder.Test.main(Test.java:13) 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);
}

最佳答案

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

=> [[I@ 一些引用

System.out.println(Arrays.asList(new Integer[]{5}).get(0));

=> 5

关于java - 当我尝试打印 vector 元素时,我得到这些奇怪的字符!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1230842/

相关文章:

java - 用于检索 csrf token 的内置方法

Java:如果值使用流匹配,则组合两个映射键

java - 从流中获取最后 n 个元素

java - 为什么我的程序在Eclipse和Maven中清理后可以运行?

javascript - "has"表达式中的 "this.has"来自哪里?

java - 可以禁用 Java 自动装箱吗?

powershell - 如何在 PowerShell 中注释掉代码?

javascript - 自动执行匿名 JavaScript 函数的括号位置?

java - 为什么Integer和int可以互换使用?

java - 混淆自动装箱与泛型的使用