class VarAgs{
// variable length parameters
static void vaTest(String ... str){
System.out.println(str.length + " contains : ");
for(String s:str){
System.out.print(s+" ");
}
System.out.println();
}
public static void main(String[] args) {
String s1[] = {"hi","hello"};
vaTest(s1);
vaTest(s1 + " 1 ");
}
}
输出:
2 contains :
hi hello
1 contains :
[Ljava.lang.String;@2a139a55 1
答案 0 :(得分:0)
当您在其中用字符串连接数组时
vaTest(s1 + " 1 ");
然后将对数组的引用转换为字符串
[Ljava.lang.String;@2a139a55
因此vaTest方法将收到
[Ljava.lang.String;@2a139a55 1
作为大小为1的数组。
答案 1 :(得分:0)
当您执行vaTest(s1 + " 1 ");
时,由于string concatenation规则(“ +”号),将使用s1的字符串表示形式。因此,您得到的不是格式化数组,而是:[Ljava.lang.String;@2a139a55
用vaTest(Arrays.toString(s1) + " 1 ");
替换它以获得预期的结果。
答案 2 :(得分:0)
它的工作原理如下:
s1
被隐式转换为String(s1.toString()
),结果为[Ljava.lang.String;@2a139a55
。1
添加到上述字符串中。结果为[Ljava.lang.String;@2a139a55 1
varargs()
函数中。