本问题已经有最佳答案,请猛点这里访问。
我正在尝试用下面的代码编写一个简单的程序来生成一个一维数组,然后您可以使用索引号调用一个值。我用Java和Eclipse作为我的编译器。每当我尝试调试或运行程序时,完整的数组就会打印如下:[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,所以我可以很简单地回答这个问题。如果有人有什么想法,我会非常感激的。
数组具有equals()、hashCode()和toString()的默认实现。
Java是一种面向对象的语言。当您在Java中调用EDOCX1→0 }时,实际上是在Del>内存中的堆上的对象的地址< /DEL>从它的父类EDOCX1→1中得到ToStand代码,下面的代码由EngUAD的注释提供,很抱歉出现错误。您看到打印出来的奇怪字符串是当您请求与变量MyArray相关联的内容时,计算机用来查找数据的引用。
如其他答案所述,要打印出对象的数据,可以使用Array类的内置.toString()方法。这将打印来自对象的数据,而不仅仅是对象引用。
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
实际上是Object类的toString():getClass().getName() +"@" + Integer.toHexString(hashCode())类。
它肯定不是堆上的地址!
@福阿德和马克罗特韦尔感谢您的更正,现在进行编辑。我说错了,我以为是我受教育时的地址。
用途:
System.out.println(Arrays.toString(MyArray));
以便打印数组元素。在您的例子中,您使用了默认的object.toString()实现,这并不是很有用…
改为使用:
System.out.println(Arrays.toString(MyArray));
API引用:array.toString(int[])
成功了,谢谢!我认为这是一个非常简单的修复方法,是正确的。
USSR2012016:这不是固定的,它是Java语言的特性。了解ObjecttoString()方法的作用。
要打印数组,需要使用循环。例如:
for (int i: MyArray){
System.out.print(i +"")}