一、数组的概念
a) 一组连续的存储空间,用来存放多个相同类型的变量,并且可以对他们进行统一的操作。
b) 特点:
i.连续的存储空间,长度是固定
ii.类型相同
二、数组的使用
a) 数组的声明
数据类型[] 数组名;【重点】
数据类型 []数组名;
数据类型 数组名[];
b) 分配空间
数组名 = new 数据类型[长度];
c) 数组的使用
i.数组中的每一个数据称之为数组的元素。
ii.数组中每一个元素都有一个编号,这个编号称之为数组的下标。
注意:
1.数组中的下标从0开始,自动增加,每次加1。
2.数组的下标范围:0~数组长度-1
iii.数组的使用:数组名称[数组的下标]
1.数组的赋值
数组名称[数组的下标] = 值;
2.数组的取值
数组名称[数组下标];
d) 数组下标越界异常
三、数组的遍历
逐一对数组中的每一个元素进行访问称之为数组的遍历。
动态的获取数组的长度:数组名.length
四、数组存在默认值
数组存在默认值。默认值的情况如下:
1、整数类型: 0
2、浮点数类型: 0.0
3、boolean : false
4、char类型: 空字符 ‘\u0000’
String及其它对象类型 : null
五、数组的其他定义方式
a)先声明再分配空间
语法:数据类型[] 数组名;
数组名 = new 数据类型[数组长度];
b)声明并分配空间
语法:数据类型[] 数组名 = new 数据类型[数组长度];
c)声明并初始化[繁]
语法:数据类型[] 数组名 = new 数据类型[]{值1,值2,值3,……};
注意:数组长度与初始化的值不能同时出现。
支持换行
数据类型[] 数组名;
数组名 = new 数据类型[]{值1,值2,值3,……};
d)声明并初始化[简]
语法:数据类型[] 数组名 = {值1,值2,值3,……};
注意:不支持换行。
六、赋值规则
a)基本数据类型之间的赋值为值传递;一个值的改变不影响另一个值。
b)引用数据类型之间的赋值为地址的传递。数组名中存放的是数组的首地址。
如果一个数组中的元素的值改变了,那么另一个数组中元素的值跟着改变。
七、数组的复制
a)新建一个数组,数组的长度为原数组的长度,然后将原数组的值一一赋值给新数组的值。
int[] a = {值1,值2};
int[] b = new int[a.length];
b[0] = a[0];
b[1] = a[1];
b)java.lang.System.arraycopy(原数组,原数组起始位置,新数组,新数组起始位置,长度);
原数组:int[] a = {值1,值2};
新建一个数组 int[] b = new int[a.length];
System.arraycopy(a,0,b,0,a.length);
c)java.util.Arrays.copyOf(原数组,长度);返回一个新的数组
注意:不需要重新创建数组
八、数组的扩容
扩容的思路:首先需要新创建一个数组,新数组的长度是原数组长度的2倍,然后将原数组的值复制到新的数组中。
九、数组的作用
a)数组可以作为参数
b) 数组可以作为返回值类型
十、可变长参数
a)概念:
可以接受多个相同类型的实参,个数不限,用法同数组。JDK1.5特性
b)语法:(数据类型… 形参名)
c)应用:在传入多个参数的时候,程序会根据传入的实参个数去创建一个同类型同长度的数组。
d)思考:在形参列表中能否出现多个可变长参数?
不可以,在传入实参的时候不确定到底该为哪个可变长参数赋予实际长度的值。
注意:在一个形参列表中,只能出现一个可变长参数,并且只能在参数表的末尾。
十一、数组的排序
a)冒泡排序
相邻的两个元素进行比较,如果前者大于后者,则交换位置。每次比较得出最大者。
外层循环控制比较的轮数,内层循环控制的是该轮比较的次数。
b)选择排序
排序的规则:固定位置的元素和其他位置的元素进行比较,如果前者大于后者,则交换位置。
c) 快速排序
java.util.Arrays.sort(需要排序的数组名); // 默认按照升序的方式的排列。
十二、二维数组
a)概念:二维数组是一维数组的一维数组。
b)定义语法
i.声明
数据类型[][] 数组名称;
ii.开辟空间
数组名称 = new 数据类型[行][列];
iii.使用
数组名[行数][列数] = 值;
数据名[行数][列数];
注意:二维数组和一维数组相同,都具有默认值
c)二维数组的内存结构
d)二维数组的遍历
e)二维数组的其他定义方式
i.先声明再分配空间
数据类型[][] 数组名;
数组名 = new 数据类型[高维][低维];
ii.声明并分配空间
数据类型[][] 数组名 = new 数据类型[行][列];
iii.声明并初始化[繁]
数据类型[][] 数组名 = new 数据类型[][]{{值1 ,值2},{值1 ,值2},{值1 ,值2 }};
注意:数组长度与初始值不能同时出现。
iv.声明并初始化[简]
数据类型[][] 数组名 = {{值1 ,值2},{值1 ,值2},{值1 ,值2 }};
f)不规则的二维数组
注意:在定义不规则的二维数组时,不能不指定行数(高维长度)。