0

我正在尝试使用下面的代码编写一个简单的程序来创建一个单维数组,然后您可以使用索引号调用一个值。我使用作为我的编译器。每当我尝试调试或运行程序时,整个数组都会打印为:[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

4 回答 4

8

Java 是一种面向对象的语言。当您System.out.print(MyArray);在 Java 中调用时,您实际上是在打印内存堆中对象的地址来自它的父类的 toString 代码Object,代码如下所示,由 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()

于 2013-04-25T14:31:56.210 回答
3

利用:

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

为了打印数组元素。在您的情况下,您使用了默认的Object.toString()实现,它的信息量不大......

于 2013-04-25T14:28:53.447 回答
2

改用这个:

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

API 参考:Arrays.toString(int[])

于 2013-04-25T14:28:40.923 回答
0

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

for (int i: MyArray){
System.out.print(i + " ")}
于 2013-04-25T14:30:11.233 回答