java中数组的length属性的返回值探究

    今天在实现线性表的顺序存储结构时发现,有一个地方List的长度的返回值是使用array.length实现。以下代码为java中ArrayList的源码:


private transient Object[] elementData;//定义了ArrayList中用于保存对象的数组

private int size;   

   //顺便初始化了size,该size为c.toArray()后数组的长度

public ArrayList(Collection<? extends E> c) {
elementData = c.toArray();
size = elementData.length;
// c.toArray might (incorrectly) not return Object[] (see 6260652)
if (elementData.getClass() != Object[].class)
   elementData = Arrays.copyOf(elementData, size, Object[].class);
    }

    //返回ArrayList的长度

    public int size() {
return size;
      }

   对上述代码有疑问,array.length返回的值是表示此数组对象可以存储多少元素*(think in java在关于数组16.2章中给出的)。如果arrayList容量为100,然而其中的元素只有50,那么调用ArrayList的size()方法返回的值是50还是100?

    测试数组length属性方法如下:

   

import java.util.*;


public class TestArrayLength
{
public static void main(String[] args)
{
int[] test_01 = {1,2,3,4,5,6,7,8,9,10};
Integer[] test_02 = new Integer[10];
ArrayList<Integer> list  = new ArrayList<Integer>(100);

test_02[0] = 1;
test_02[1] = 2;

for(int i = 0;i < 50;i++)
{
list.add(i);
}
System.out.println(test_01.length);
System.out.println(test_02.length);
System.out.println(list.size());
}
}


   输出为10,10,50.

    用了同样的array.length为啥返回的值不一样。

    原因是:实质上在创建一个ArrayList时,其容量一般为默认的10或者自己指定大小,但是其size变量任然为0,没有对其进行赋值。

    ArrayList每次在调用add()方法和remove()方法是,都对size进行了自加或者自减操作,所以size()方法可以返回list中元素的个数,size变量类似于计数器。

    总结:array.length返回的是数组当前的容量,并不会返回数组中元素的个数。(元素刚好填充满数组的情况除外。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值