填写java数组列表
我想用Java填充数组列表 我试着这样做是为了练习一下:填写java数组列表,java,Java,我想用Java填充数组列表 我试着这样做是为了练习一下: ArrayList <int []> temp = new ArrayList <int []>(); for (int a = 1; a < 4 ; a++) { int [] array = new int [8]; for (int i = 0; i < 8; i++) { array [i] = i*a;
ArrayList <int []> temp = new ArrayList <int []>();
for (int a = 1; a < 4 ; a++) {
int [] array = new int [8];
for (int i = 0; i < 8; i++) {
array [i] = i*a;
}
System.out.println(array);
temp.add(array);
}
System.out.println(temp);
请问,为什么会有这种奇怪的结果?
temp
被定义为ArrayList
,即数组列表。在Java中,当您打印某些内容时,例如通过调用System.out.println(temp)
,通过隐式调用toString()
将所讨论的对象转换为字符串ArrayList
覆盖toString()
并依次打印其每个元素。对于每个元素,toString()
也被调用。但是,没有为int[]
定义toString()
,因此您只需获取对象引用,即外观有趣的字符串[I@6d06d69c
。要以有意义的方式打印temp
的值,您需要转换每个int[]
到人类可读的内容。最简单的方法是使用java.util.Arrays.toString()
因此,您可以尝试以下方法:
for (int[] element : temp) {
System.out.println(Arrays.toString(element));
}
您要做的是打印对象类名表示,然后是@,后跟Hashcode 您的输出: [I@15db9742, [I@6d06d69c, [I@7852e922]
I
是对象类表示
后跟@
的数字是哈希代码
因此,当您调用此System.out.println(temp);
时,您正在打印数组的默认表示形式。要从中获取有意义的内容和数据,您需要执行以下操作:
System.out.println(java.util.Arrays.toString(temp));
这是int数组的默认toString。是否已解决??
System.out.println(java.util.Arrays.toString(temp));