我正在尝试使用下面的代码编写一个简单的程序来创建一个单维数组,然后您可以使用索引号调用一个值.我使用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]);
}
}
Run Code Online (Sandbox Code Playgroud)
正确的数据条目在被调用时打印出来.我试图在网上寻找我应该做什么的答案,但我找不到任何有效的方法.我刚刚开始学习Java所以可能有一个非常简单的答案,我只是忽略了.如果有人有任何想法,我将非常感激.
Java是一种面向对象的语言.当您System.out.print(MyArray);使用Java 调用时,实际上是在打印内存中堆上对象的地址来自它的父类的toString代码Object,下面显示的代码由EngFouad的评论提供,对不起发言.您看到打印出的奇怪字符串是当您要求与变量关联的内容时计算机用于查找数据的引用MyArray.
如其他答案所述,要打印出对象的数据,您可以使用Array类的内置.toString()方法.这将打印来自对象的数据,而不仅仅是对象引用.
System.out.println(Arrays.toString(MyArray);
Run Code Online (Sandbox Code Playgroud)
更正 实际上它是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()