为什么我的阵列不能正确打印出来?

时间:2013-04-25 14:27:48

标签: java arrays

我正在尝试使用下面的代码编写一个简单的程序来创建一个单维数组,然后您可以使用索引号调用一个值。我使用作为我的编译器。每当我尝试调试或运行程序时,完整数组就会打印出来:[I@1fa8d3b

class Array    
{
public static void main(String[] args)
{
    int[] MyArray = new int[] {15, 45, 34, 78, 65, 47, 90, 32, 54, 10};
    System.out.println("The full array is:");
    System.out.println(MyArray);
    System.out.println("The 4th entry in the data is: " + MyArray[3]);
}
}

正确的数据条目在被调用时打印出来。我试图在网上寻找我应该做什么的答案,但我找不到任何有效的东西。我刚刚开始学习Java所以可能有一个非常简单的答案,我只是忽略了。如果有人有任何想法,我将非常感激。

4 个答案:

答案 0 :(得分:7)

Java是一种面向对象的语言。当您在Java中调用System.out.print(MyArray);时,实际上是在内存中打印对象的地址来自它的父类Object的toString代码,代码如下所示来自EngFouad的评论作出了贡献,对不起发言。您看到打印出的奇怪字符串是当您要求与变量MyArray关联的内容时计算机用于查找数据的引用。

正如其他答案所述,要打印出对象的数据,您可以使用Array类内置的.toString()方法。这将打印来自对象的数据,而不仅仅是对象引用。

System.out.println(Arrays.toString(MyArray);

<强>校正 实际上它是Object类的toString():getClass()。getName()+“@”+ Integer.toHexString(hashCode())。 - Eng.Fouad

上面的错误已得到纠正,感谢您的评论,不愿提供错误的信息。我自己误解了。以下是查看代码的API参考:

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html#toString()

答案 1 :(得分:3)

使用:

System.out.println(Arrays.toString(MyArray));

为了print the array elements。 在您的情况下,您使用了默认的Object.toString()实现,这不是那么有用......

答案 2 :(得分:2)

请改用:

System.out.println(Arrays.toString(MyArray));

API Reference: Arrays.toString(int[])

答案 3 :(得分:0)

打印您需要使用循环的数组。例如:

for (int i: MyArray){
System.out.print(i + " ")}