java的数组和arraylist

1.数组

 1.0   一开始就错了 int a[8];    //没有像C在内存中开辟了8个区域

改: 

   int a[] = {1,2,3} ;	
   System.out.println(a.length); //3

  

1.1用java专用的new运算符

int[]  array = new int[8];
//引用array[2] 就是0

  

 

数组特点: 大小固定  ,  按下标进行取值


2.arraylist

工作原理就是:1.  new一个的时候得到10个元素的数组

add超过10个元素的时候,也就是当添加第11个数据的时候,Arraylist继续扩容变为10*1.5=15

2. new一个新数组(15元素),然后把老的数组元素copy过来

增 删 都会移动元素的大量移动

对比《数据结构》的顺序表

顺序表定义:用一组地址连续的存储单元依次存储线性表的数据元素的表

相当于能够动态增加删除数组里面的元素。

构造器
 ArrayList提供了三个构造器:
public   ArrayList();
默认的构造器,将会以默认(16)的大小来初始化内部的数组

在做实验实现顺序表的时候,int a[100] ,然后用一个变量L来标识这个表的长度

 List list = new ArrayList();
 list.add(1);

  

首先,ArrayList有一个初始的默认大小,为10.
private static final int DEFAULT_CAPACITY = 10;

从add方法为入口
public boolean add(E e) {
        ensureCapacityInternal(size + 1);  //  确保不超出内部的容量
        elementData[size++] = e;      // 标准的数组啊
        return true;
    }

  

ArrayList的扩容会产生一个新的数组,将原来数组的值复制到新的数组中。会消耗一定的资源

 

原文地址:https://www.cnblogs.com/cs-lcy/p/8401176.html