1、数组
数组是有序的元素序列,若将有限个类型相同的变量的集合命名,那么这个名称为数组名,组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。
2、特点
- 数组是相同数据类型的元素的集合。
- 数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。
- 数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。例如:a[0]表示名字为a的数组中的第一个元素,a[1]代表数组a的第二个元素,以此类推。
3、表现形式
- 一维数组
Int a[], String a[]
- 多维数组
Int a[][],Int a[][][],Int a[m][n]
内存空间:m * n
4、特性
数组是连续的内存空间和相同类型的数据,所以它有了一个非常重要的特性:随机访问。但是也导致了数组的很多操作变得非常低效,比如删除和插入数据,为了保证连续性,就需要做大量的数据搬移工作。
//size 数组的内存
//index 当前已存数据的大小
public void insert(int loc, int n) {
if(index++ < size) {
for(int i = size - 1; i > loc; i--) {
data[i] = data [i - 1]; //把数据往后移一个
}
data[loc] = n;
}
}
public void delete(int loc) {
for(int i = loc; i < size; i++) {
if(i != size - 1) {
data[i] = data[i + 1];
} else {
data[i] = -1;
}
}
index--;
}
ArrayList和数组
本质上是一样的,都是数组,但是ArrayList是JDK封装好了的,不需要管扩容等操作,但是普通的数组中的所有操作都需要自己来操作。
两者如何选用呢?
- 不知道数据大小的选ArrayList。
- 知道数据的大小而且又非常关注性能那就用数组。 注:数组最需要主义的就是越界,所以一定要多加判断,尤其是在开始和结束。
堆栈内存
Java分为堆栈两种内存。
- 什么是堆内存:存放new创建的对象和数组
- 什么是栈内存:引用变量
堆栈的区别
- 栈的速度要快。
- 栈内存的数据可以共享,主要存一些基本数据类型。
为什么很多计算机编程语言中数组的下标要从0开始?
定义一个数组一定会分配内存空间,如果从1开始编号,每次随机访问数组元素都多一次减法运算,对于CPU来说,就是多一次减法指令。