格式1: int[] arr = new int[5]; //生成长度为5的 int 数组默认值为0
格式2: int[] arr = {1,3,5,7};
格式3: int [] arr = new int[]{1,3,5,7}
多维数组 int arr[][] = new int[3][4];
打印数组 System.out.println(Arrays.toString(arr));
删除数组最后一位 int[] arr = Arrays.copyOf(arr, arr.length-1); 执行拷贝操作,复制 length-1 个数,到新数组
ArrayList 无限容量为假象。底层为初始为10.不够自动扩容。
add()方法 size加一,然后添加元素
remove()方法 底层还是 同数组copy
size()
1、add()方法
该方法的源码如下:
public boolean add(E e) {
ensureCapacityInternal(size + 1);
elementData[size++] = e;//添加对象时,自增size
return true;
}
2.size()方法
public int size() {
checkForComodification();
return this.size;
}
3、remove()方法
该重构方法其一源码如下(其它的就不累述了):
public E remove(int index) {
rangeCheck(index);
modCount++;
E oldValue = elementData(index);
int numMoved = size - index - 1;
if (numMoved > 0)
System.arraycopy(elementData, index+1, elementData, index,
numMoved);//将后面的列表对象前移
elementData[--size] = null; // 数组前移一位,size自减,空出来的位置置null,具体的对象的销毁由Junk收集器负责
return oldValue;
}
private void rangeCheck(int index) {//边界检查
if (index < 0 || index >= this.size)
throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
}
E elementData(int index) {//获取指定index所在位置的对象
return (E) elementData[index];
}