数组
概念:
1.数组(array)是具有相同数据类型的元素的有序集合;
2.数组的元素个数称为数组长度、元素在数组中的位置称为元素的下 标;
3.采用一个下标唯一确定一个元素的数组称为一维数组,两个下标唯一确定一个元 素的数组称为二维数组;
4.数组元素的类型既可以是基本数据类型,也可以是引用数据类型;
5.Java的数组一般都是动态数组,声明数组变量之后,使用new运算符申请数组的 存储空间
一维数组
1.声明方式2种:
数据类型[] 数组变量 (常用)
数据类型 数组变量[]
2.使用new为数组分配空间
数组变量 = new 数据类型[长度]
3.数据长度length
使用点运算符获得数据长度:数组变量.length
4.数组元素表示及运算
一维数组的一个元素由下标决定:数据变量[下标]
下标是确定数组元素位置的表达式,取值范围为0~a.length-1
5.数据声明时赋初值
int[] a = {x,y,z};
6.Java对使用new运算符动态分配的存储单元都进行初始化,各数据类型获得初始 值
7.for语句作用与数组的逐元循环(for each loop)
for(类型 变量 :数组)
8.数组的引用模型
引用数据类型的变量获得存储单元的方式都是动态的,需要使用new运算符申 请并动态获得存储单元(基本数据类型变量的获取方式都是静态的)
数组为引用数据类型;当数组变量引用数组时,就是数组变量保存数组的引用 信息(包括该数组占用的存储空间的首地址、长度及引用计数等特性)
两个数组变量之间赋值称为引用赋值,传递的值是数组引用,并没有申请新的存储空间(只是改变了指向地址,并不是真的改变了数组的值)
此例子中,数组变量b引用a拥有的数组后,对数组b数组元素的操作将同时改变数组a的元素值,此时a == b true
int a[] = {1,2,3},b[];
b = a;
b[1] = 10;
a == b //true
---
此时将a数组的所有元素复制到b数组,会再次给数组变量分配存储空间,
b = new int[a.length]
for(int i=0; i<a.length; i++){
b[i] = a[i];
}
a == b //false
所以引用类型比较的是指向内存中的地址
9.通常,程序中不需要释放数组,Java会自动收回不在使用的数组占用的存储空 间,特殊需要时,可以将数组变量赋值为null(引用数据类型空值),释放数组 空间
二维数组
概念:当数组元素又是数组时,则成为多维数组,常用的为二维数组(声明多维数组时需要表明数组的维数)
1.声明二维数组:
在声明二维数组变量及申请存储空间时,用括号运算符[][]
标明二维
int arr[][];
//声明
arr = new int[4][5];
//申请4*5个存储单元
或声明和存储空间写在一起:
int arr[][] = new int[4][5];
或在声明时为二维数组赋初值,使用多层花括号:
int arr[][] = {{1,2,3},{4,5,6}};
2.二维数组的引用模型:
3.不规则的二维数组