本问题已经有最佳答案,请猛点这里访问。
我是编程新手。我相信这个问题的答案是肯定的,但我不知道要搜索什么。
好的,我马上去。
这是我的代码:
int[] arr;
arr = new int[5];
arr[0] = 20;
arr[1] = 50;
arr[2] = 40;
arr[3] = 60;
arr[4] = 100;
System.out.println(arr);
这编译起来工作得很好。只是命令的输出让我头晕。
这是输出:[I@3e25a5。
我希望输出代表列表中完全相同的数字(arr)。我怎样才能做到?
@邓肯·琼斯有趣的是,当这篇文章比另一篇文章早了4年的时候,你把它标为一个副本…不过,我理解链接帖子是一个类似于教程的帖子。
@是的,有点奇怪。但这是一种常见的做法-如果有更详细的答案,可以将旧问题作为重复问题关闭。
每个对象都有一个toString()方法,默认方法是显示对象的类名表示,然后显示@及其哈希代码。所以您看到的是默认的toString()表示int数组。要打印数组中的数据,可以使用:
System.out.println(java.util.Arrays.toString(arr));
。
或者,您可以像其他线程中发布的那样,使用for循环来循环数组。
System.out.println(Arrays.toString(arr));
电流输出为classtype@hashcode。
如果需要打印具有多个维度的数组,请使用:
Arrays.deepToString(arr);
。
还记得为用户定义的类重写toString()方法,这样您就可以根据自己的选择获得objet的表示,而不是默认的classtype@hashcode表示。
要打印值,请使用。
for(int i=0; i
System.out.println(arr[i]);
不是内存地址。类名+"@"+哈希代码。
你是对的。我会编辑的
在很多情况下,它可能是一个内存地址。对象api声明toString的结果是:getClass().getName()+'@'+integer.toHexString(hashCode())和api进一步声明,为了让hashCode尽可能返回唯一的数字:这通常是通过将对象的内部地址转换为整数来实现的,但是这种实现技术不是javamt编程语言所要求的。因此,如果没有重写hashcode和toString,您将看到一个内部地址。
它是数组(奇怪的文本)的默认字符串表示形式。
你只需要循环一下:
for(int i : arr){
System.out.println(i);
}
顺便说一下,你可以写
int[] arr = { 20, 40, 60, 40, 60, 100 };
System.out.println(Arrays.toString(array));
。
甚至
System.out.println(Arrays.toString(new int[] { 20, 40, 60, 40, 60, 100 }));
或
System.out.println(Arrays.asList(20, 40, 60, 40, 60, 100));
。
它打印它的.toString()方法您应该打印每个元素
for(int i=0; i
System.out.println(arr[i]);
}
or
for(Integer i : arr) {
System.out.println(i);
}
for (int i = 0; i < arr.length; ++i)
{
System.out.println(arr[i]);
}
。
如果总是打印arr[],为什么要循环?
@恩里克·泰,修好了。
这样地:
for (int i = 0; i < arr.length; ++i)
{
System.out.println(arr[i]);
}
号
那个"奇怪的数字"是你打印出来的数组的参考。它是java.lang.object toString()方法中内置的默认行为。
如果看不到引用,您应该在自己的对象中重写它。
我的短版!
使用array.toString()和printstream.printf(字符串格式,对象…ARGS)。
System.out.printf("%s%n", Arrays.toString(arr));
号
您打印了引用,而不是引用处的值…总有一天,一切都会变得清晰。
不是这样的。他打印了.toString()返回的内容,数组上的.toString返回一个格式为"[@"的字符串。