数组长度返回错误的数字?

时间:2016-10-20 05:32:34

标签: java arrays

我尝试使用.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

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以了解此命令的行为:

ArrayList::toArray( array )

  

以适当的顺序(从第一个元素到最后一个元素)返回包含此列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。如果列表适合指定的数组,则返回其中。否则,将为新数组分配指定数组的运行时类型和此列表的大小。

     

如果列表适合指定的数组并且有空余空间(即,数组的元素多于列表),则紧跟集合结尾的数组中的元素将设置为null。 (仅当调用者知道列表不包含任何null元素时,这在确定列表长度时很有用。)