数组知识点回顾
声明Java数组时,会在内存中开辟一块连续指定大小的空间,用来存储固定大小的同类型元素
在java中定义个名为scores,长度为8,类型为int类型的数组如下:
public static void main(String[] args) {
int[] scores = new int[8];
}
为了便于理解,我们看下它在内存的中的分布示意图:
图中的一个个小格子是用来存放数组的元素,小格子上方的0-7
数字,是数组中每个元素的下标(也可以叫索引),如果我们要查询数组中指定位置的元素,我们可以通过数组名[索引]
来获取,比如图中的scores[2]
在图中我们还可以看到,数组的起始下标是从0
开始的(也就是第一个元素),最后一个元素的下标是7
(也就是数组的长度8
减1
)由此类推,数组长度若是n
,那么数组最后一个元素的下标是n-1
(数组的起始下标总是从0
开始的)
各位不要闲唠叨哈,为了照顾所有人(其实我的内心是很纠结的。。。?)
自定义数组类
思路分析
使用data
属性表示存放数组的元素,
使用capacity
属性表示数组的容量(等价于数组的长度),但是真正自定义数组类的时候我们不需要显示声明,因为隐示等价于(Array.length
)
使用size
属性表示数组中真正存放元素的个数(注意和capacity
概念的区分)。
我们画出示意图:
下面我们来完成初始代码
public class ArrayExample {
/**
* 存放数组的元素
*/
private int data[];
/**
* 数组中元素的个数
*/
private int size;
/**
* 根据指定capacity容量初始化数组
*
* @param capacity 容量
*/
public ArrayExample(int capacity) {
data = new int[capacity];
size = 0;
}
/**
* 无参构造函数,指定默认数组容量capacity=10
*/
public ArrayExample() {
this(10);
}
/**
* 获取数组中元素的个数
*
* @return
*/
public int getSize() {
return size;
}
/**
* 获取数组容量
*
* @return
*/
public int getCapacity() {
return data.length;
}
}
向数组中添加元素
向指定位置添加元素
假设现在数组的形态是这样,我们需要将77
元素插入到索引为1
的位置
思路分析:把当前索引为1
的位置元素以及后面的元素都向后挪一个位置,然后将77
这个元素放到索引为1
的位置(注意:挪位置的时候,我们应该从最后一个元素100
向后挪一个位置,换句话说从后往前挪),完成之后,维护一下size
的索引,进行size++
操作(size
是始终指