一.数组基础:
它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。
数组的声明并不是声明一个个单独的变量,比如 number0、number1、…、number99,而是声明一个数组变量,比如 numbers,然后使用 numbers[0]、numbers[1]、…、numbers[99] 来代表一个个单独的变量。数组中的特定元素可以通过索引访问。
所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。
数组最大的优点:快速查询。如scores[2];但并非所有语意的索引适用于数组
如身份证号,开辟的内存空间太大
索引一般有语意。
封装自己的数组:
二.自定义数组
首先创建一个数组类,包含data[]和size:索引
public class Array {
private int[] data;
/**data中的有效数据**/
private int size;
//构造函数,传入数组的容量的capacity构造Array
public Array(int capacity){
data = new int[capacity];
size = 0;
}
//10是capacity的值,无参数的构造函数
public Array(){
this(10);
}
//获取数组中的元素个数
public int getSize(){
return size;
}
//获取数组的容量
public int getCapacity(){
return data.length;
}
//返回数组是否为空
public boolean isEmpty(){
return size == 0;
}
向数组添加元素
思路:进行整体右移
//向数组的最后添加数据
public void addLast(int e){
add(size,e);
}
//在第index的位置上插入一个新元素e
public void add(int index,int e){
if(size == data.length){
throw new IllegalArgumentException("Array is full");
}
if(index < 0 || index > size){
throw new IllegalArgumentException("Array failed.Requires index >=0 and index <= size");
}
for(int i = size -1;i >= index;i--){
data[i+1] = data[i];
}
data[index] = e;
size++;
}
//向数组头添加新得元素
public void addFirst(int e){
add(0,e);
}