1
一维数组
(1)类型为引用数据类型,父类是Object
(2)一组数据的集合
(3)可以存储基本数据类型,引用数据类型
(4)数组对象是堆内存当中
(5)数据对象存储的是Java对象的话,实际存储的是对象的引用(内存地址)
(6)长度不可变
(7)分类:一维,二维,三维...
(8)数组对象自带Length属性,用来获取元素的个数
(9)要求元素类型统一
(10)数组的元素内存地址是连续的
(11)数组拿第一个小方框的内存地址作为整个数组对象的内存地址
(12)每一个元素都有一个小标,从0开始,以1递增,最后一个元素的下标是length-1
(13)优点:
- 查询,查找,检索某个下标的效率最高。
- 每个元素内存是连续的
- 每个元素类型相同,占用空间大小相同
- 可以根据数学表达式求某下标
缺点:
- 删除和增加的效率较低,涉及后面元素的移动
- 不能存储大数据量
2
jvm中
(1)
(2)
3
定义数组
int[] arr1;
double[] arr2;
boolean[] arr3;
String[] arr4;
Object[] arr5;
4
初始化
静态:
int[] arr1={100,200,300,4};//
动态:
int[] arr2=new int[5];//初始化一个长度为5的int类型数组,每个元素默认为0
String[] names=new String[6];//初始化一个长度为6的String类型数组,默认为NULL
5
(1)数组中
第一个元素:a[0]
最后一个元素:a.length-1
总的元素个数:a.length
(2)确定存储哪些具体元素时,使用静态初始化方法,反之使用动态初始化方法。
(3)方法的参数是数组。
(4)可以这样:方法名(new int[]{1,2,3})。main()方法中的String数组负责给jvm调用
6
数组扩容
先创建一个大容量的数组,然后将小容量数组中的数据一个一个拷贝到大数组中。
数组扩容率低,所以创建时需要预估
示例:
public class Text {
public static void main(String[] args) {
//运用arraycopy(5个参数);
int[] src={1,2,3,4,5};
int[] dest =new int[10];
//System中的arraycopy方法
System.arraycopy(src,1,dest,3,2);
for (int i=0;i<dest.length;i++){//遍历
System.out.print( dest[i] );
}
}
}
//结果:0002300000
另外:如果拷贝元素为引用(数据类型)
7
二维数组
是特殊的一维数组,每一个元素是一个个一维数组
arr[3][5]中,a[3]是整体,[5]为其的一部分
8
算法
(1)排序算法:冒泡,选择。查找算法:二分法查找
(2)java数组工具类:java.util.Array
有sort()方法排序