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

Why won't my array print out correctly?

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
8
9
10
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,所以我可以很简单地回答这个问题。如果有人有什么想法,我会非常感激的。


Java是一种面向对象的语言。当您在Java中调用EDOCX1→0 }时,实际上是在Del>内存中的堆上的对象的地址< /DEL>从它的父类EDOCX1→1中得到ToStand代码,下面的代码由EngUAD的注释提供,很抱歉出现错误。您看到打印出来的奇怪字符串是当您请求与变量MyArray相关联的内容时,计算机用来查找数据的引用。

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

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

修正实际上它是类对象的toString():getClass().getName()+"@"+integer.toHexString(hashCode())。- Eng. Fouad

上面的错误被纠正了,谢谢你的评论,讨厌给出错误的信息。我自己也误解了。以下是API参考代码:

http://DOCS.Oracle .COM/JavaSe/1.5.0/DOCS/API/Java/Lang/Objult.html


用途:

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

以便打印数组元素。在您的例子中,您使用了默认的object.toString()实现,这并不是很有用…


改为使用:

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

API引用:array.toString(int[])


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

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