[英]Fill a list of arrays 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;
}
System.out.println(array);
temp.add(array);
}
System.out.println(temp);
这是我得到的输出
[[I@15db9742, [I@6d06d69c, [I@7852e922]
请问,为什么我有这个奇怪的结果?
temp
定义为ArrayList <int []>
,即数组列表。 在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));
}
您正在打印一个ArrayList。 尝试使用循环来打印或保存结果。
例如:
for(int i=0; i<ArrayList.size(); i++){
System.out.println(ArrayList.get(i[i]));
}
您不应该直接打印一个数组列表。
打印数组时,将显示其引用,而不显示其元素。 尝试将数组替换为另一个ArrayList
。
您正在做的是先打印对象类名称表示形式,然后打印@,然后打印Hashcode。
您的输出:
[I @ 15db9742,[I @ 6d06d69c,[I @ 7852e922]
I
是对象类的表示形式
Numbers followed by @
是哈希码。
因此,当您调用此System.out.println(temp);
您正在打印array
默认表示形式。 要获得有意义的东西和数据,您需要执行以下操作:
System.out.println(java.util.Arrays.toString(temp));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.