我正在学习软件编程考试。在这里,我试图附加2个数组,但我得到的是:
[I@17dfafd1
这是代码:
package examPreparation2014;
public class FirstExercise {
public static void main(String[] args){
int[] first = {1,2,3};
int[] second = {4,5,6};
System.out.print(FirstExercise.concatenator(first, second));
}
public static int[] concatenator(int[] first, int[] second){
int[] concatenatedArray = new int[first.length + second.length];
for (int i = 0; i<first.length ; i++){
concatenatedArray[i] = first[i];
}
for (int i=0; i<second.length; i++){
concatenatedArray[i+first.length] = second[i];
}
return concatenatedArray;
}
}
PS:这是纸上考试,因此我无法导入库: - )
答案 0 :(得分:3)
阵列也是对象,但它们不会覆盖Object
's toString()
method。
换句话说,此方法返回一个等于值的字符串:
getClass().getName() + '@' + Integer.toHexString(hashCode())
这解释了你收到的奇怪的输出。
字符串表示由数组元素的列表组成,用方括号括起来(&#34; []&#34;)。相邻元素由字符&#34;,&#34;分隔。 (逗号后跟空格)。
System.out.print(Arrays.toString(FirstExercise.concatenator(first, second)));
答案 1 :(得分:1)
在你的情况下,它打印对象类的toString()的默认实现。
只需使用每个循环来打印数组的所有值。
for (int i : concatenator(first, second)) {
System.out.println(i);
}
使用org.apache.commons.lang.ArrayUtils
附加两个数组的简单方法int[] both = ArrayUtils.addAll(first, second);