Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java数组打印出奇怪的数字和文本_Java_Arrays_Text_Numbers - Fatal编程技术网

Java数组打印出奇怪的数字和文本

Java数组打印出奇怪的数字和文本,java,arrays,text,numbers,Java,Arrays,Text,Numbers,我是编程新手。我确信这个问题的答案就在那里,但我不知道该寻找什么 好的,我马上去 这是我的密码: 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); 这可以编译并运行良好。这只是CMD的输出,让我头晕目眩 这是输出:[I@3e25a5 我希望输出表示列表中完全相同的数字(arr)。如何实现这一点?这是数组

我是编程新手。我确信这个问题的答案就在那里,但我不知道该寻找什么

好的,我马上去

这是我的密码:

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);
这可以编译并运行良好。这只是CMD的输出,让我头晕目眩

这是输出:
[I@3e25a5


我希望输出表示列表中完全相同的数字(
arr
)。如何实现这一点?

这是数组的默认字符串表示形式(奇怪的文本)

您只需在其中循环:

for(int i : arr){
System.out.println(i);
}
像这样:

for (int i = 0; i < arr.length; ++i)
{
    System.out.println(arr[i]);
}
for(int i=0;i
这个“奇怪的数字”是您打印出的数组的引用,它是java.lang.Object toString()方法中内置的默认行为


如果查看引用不充分,则应在自己的对象中覆盖它。

要打印值,请使用

for(int i=0; i<arr.length; i++)
   System.out.println(arr[i]);

for(int i=0;i每个对象都有一个
toString()
方法,默认方法是显示对象的类名表示,然后是它的hashcode
表示
int
数组。要打印数组中的数据,可以使用:

System.out.println(java.util.Arrays.toString(arr));
或者,您可以像其他人在该线程中发布的那样,使用
for
循环遍历数组

System.out.println(Arrays.toString(arr));
电流输出为
classtype@hashcode

如果需要打印具有多个维度的数组,请使用:

Arrays.deepToString(arr);

还请记住用户定义类的方法,这样您可以根据自己的选择获得对象的表示,而不是默认的表示,即
classtype@hashcode

您打印的是引用,而不是引用处的值……有一天,使用C将变得清晰。

for(int i=0;ifor (int i = 0; i < arr.length; ++i)
{
  System.out.println(arr[i]);
}
{ 系统输出打印项数(arr[i]); } 它打印它的.toString()方法。您应该打印每个元素

for(int i=0; i<arr.length; i++) {
   System.out.println(arr[i]);
}

or

for(Integer i : arr) {
  System.out.println(i);
}
for(inti=0;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 }));

我的版本较短! 使用和


不是内存地址。类名+“@”+hashcode。你说得对。我会编辑它。如果不是大多数情况,它在很多情况下都是内存地址。对象API声明toString的结果是:getClass().getName()++'@'+Integer.toHexString(hashcode())API进一步指出,为了让hashCode尽可能返回唯一的数字:这通常是通过将对象的内部地址转换为整数来实现的,但JavaTM编程语言不需要这种实现技术。因此,如果hashCode和toString没有被覆盖,您将使用e一个内部地址。不是真的,不是。他打印了
.toString()
返回的内容,并且
.toString
在数组上返回一个字符串,格式为
“[@”
。如果总是打印arr[]?@Duncan Jones有趣的是,当这篇文章比另一篇文章早了4年时,你就把它标记为一篇重复的文章……但我知道链接的文章是一篇类似于教程的文章。@LAD是的,这有点奇怪。但这是一种常见的做法-如果有更详细的答案,你可以将旧问题作为重复的问题关闭。
System.out.println(Arrays.asList(20, 40, 60, 40, 60, 100));
System.out.printf("%s%n", Arrays.toString(arr));