我尝试使用.length
方法打印数组的大小。但是,最后它总是返回1而不是4。
这是我的代码:
int size = 4;
ArrayList<String> testArr = new ArrayList<String>();
String [] test = null;
for (int i = 0; i < size; i++) {
testArr.add("test");
test = testArr.toArray(new String[0]);
}
System.out.println(test.length); // returns 1
答案 0 :(得分:1)
您的代码确实按预期返回4,而不是您所说的1。
我按原样使用了您的代码,添加了额外的println
并修改了其他println
。
int size = 4;
ArrayList<String> testArr = new ArrayList<String> ();
String[] test = null;
for ( int i = 0 ; i < size ; i ++ ) {
testArr.add ( "test" );
test = testArr.toArray ( new String[ 0 ] );
System.out.println ( "i: " + i + " | test: " + Arrays.toString ( test ) );
}
System.out.println ( "test.length: " + test.length );
我:0 |测试:[测试]
我:1 |测试:[测试,测试]
我:2 |测试:[测试,测试,测试]
我:3 |测试:[测试,测试,测试,测试]
test.length:4
请务必阅读类doc以了解此命令的行为:
以适当的顺序(从第一个元素到最后一个元素)返回包含此列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。如果列表适合指定的数组,则返回其中。否则,将为新数组分配指定数组的运行时类型和此列表的大小。
如果列表适合指定的数组并且有空余空间(即,数组的元素多于列表),则紧跟集合结尾的数组中的元素将设置为null。 (仅当调用者知道列表不包含任何null元素时,这在确定列表长度时很有用。)