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

Rac*_*ket 11 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);
Run Code Online (Sandbox Code Playgroud)

这编译并正常工作.这只是CMD的输出,我很头晕.

这是输出:[I@3e25a5.

我希望输出代表list(arr)中完全相同的数字.我该如何做到这一点?

Hov*_*els 22

每个对象都有一个toString()方法,默​​认方法是显示对象的类名表示,然后@是哈希码.所以你看到的是数组的默认toString()表示int.要打印数组中的数据,您可以使用:

System.out.println(java.util.Arrays.toString(arr));
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用循环遍历数组,for因为其他人已在此主题中发布.


Gor*_*vic 5

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

你只需循环它:

for(int i : arr){
System.out.println(i);
}
Run Code Online (Sandbox Code Playgroud)


Enr*_*que 5

要打印值使用.

for(int i=0; i<arr.length; i++)
   System.out.println(arr[i]);
Run Code Online (Sandbox Code Playgroud)


Emi*_*mil 5

System.out.println(Arrays.toString(arr));
Run Code Online (Sandbox Code Playgroud)

目前的输出是classtype@hashcode.

如果您需要打印具有多个维度的数组:

Arrays.deepToString(arr);
Run Code Online (Sandbox Code Playgroud)

还要记住为用户定义的类重写toString()方法,以便在选择时获得对象的表示,而不是默认的表示,即classtype@hashcode