版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
数组
一、数组的概念
1. 数组的定义:计算机内存中的一组连续的存储空间,用来存放多个相同类型的变量,并且可以对多个数据进行统一的操作。
2. 特点:类型相同、长度固定、连续的存储空间
二、数组的使用
1. 数组的声明:指定数组存放的数据类型以及数组名称。
语法:数据类型[] 数组名称;
注意:数据类型 []数组名;
数据类型 数组名[];
2. 分配空间:指定数组的长度。
语法: 数组名称 = new 数据类型[长度];
3. 使用数组
a) 数组中每一个数据称之为数组元素。
b) 对数组中的每一个元素进行编号,这个编号称之为数组的下标。
数组下标从0开始,依次自动+1,最大下标为长度-1。
c) 对数组中的每元素进行操作的过程称之为数组元素的访问。
d) 赋值:通过下标
语法:数组名[下标] = 值;
e) 取值:通过下标
语法:数组名[下标]
4. 数组的遍历
逐一对数组中的每一个元素进行访问的过程。
注意:需要使用循环变量充当数组下标
动态的获取数组的下标:数组名.length
5. 数组存在默认值
整数类型:0 浮点数:0.0 布尔类型: false
字符类型:空字符|‘\u0000’ String及其他:null
6. 数组的其他定义方式
a) 先声明再分配空间
数据类型[] 数组名;
数组名 = new 数据类型[长度];
b) 声明并分配空间
数据类型[] 数组名 = new 数据类型[长度];
c) 声明并初始化【繁】
数据类型[] 数组名 = new 数据类型[]{值1,值2,值3…};
注意:数组长度和初始化值不能同时出现
支持换行
d) 声明并初始化[简]
数据类型[] 数组名 = {值1,值2,值3…};
注意: 不支持换行。
二、数据之间的赋值规则【重点】
1. 基本数据类型之间的赋值是值传递,一个值的改变不会影响另外一个值。
2. 引用数据类型之间的赋值是地址传递,一个值的改变会影响另一个值。
数组名中存放的是数组元素的首地址,通过首地址可以找到其他的元素,因为数组中的空间是连续的。
三、数组的复制
1. 新建一个数组,数组的长度为原数组的长度,再将原数组中的元素的值一一赋值给新数组中的元素的值。
2. java.lang.System.arraycopy(原数组名称,原数组起始位置,新数组名称,新数组起始位置,长度); 需要新建一个数组,新数组的长度为原数组的长度。
3. java.util.Arrays.copyOf(原数组,新长度); 返回值为新数组。
返回值:带有原数组元素的新数组
四、数组的扩容
问题:当数组中的空间不足时,但是又需要向数组中添加新的元素。
思想:新建一个数组,长度为原数组长度的2倍,将原数组中的元素复制到新数组,再向新数组中添加新元素。
五、数组的作用
1. 数组用在参数上,可以接受同类型的数组。
2. 数组用在返回值上,可以返回同类型的数组。
六、可变长参数 JDK1.5提供
1.可变长参数:函数接受参数的长度不再是固定,而是随着需求进行变换的。
2. 语法:(数据类型… 参数名) 用法同数组
当调用函数时会根据传入的参数多少自动的转换成一个相同长度的数组
注意:一个函数中只能存在一个可变长参数,并且必须在参数的最后
七、数组的排序
1.冒泡排序
思想:相邻的两个元素进行比较,如果前者大于后者则交换位置。每一轮比较都会得出较大值。
2.选择排序
思想:固定位置的元素和其他位置的元素进行比较,如果前者大于后者则交换位置。每一轮比较得出一个较小值。
3.快速排序
java.util.Arrays.sort(数组名);
八、二维数组[了解]
1. 概念: 相当于一张二维表,是一维数组的一维数组,意味着二维数组的每一个元素都是一个一维数组。
2.使用
a) 声明
数据类型[][] [] [] 数组名;
b) 分配空间 : 指定二维数组的行(高维)和列(低维) 行和列都是从0开始
数组名 = new 数据类型[ 行] [列];
c) 使用 指定行数和列数
赋值: 数组名[行 ] [列] = 值;
取值: 数组名[行] [列]
注意:二维数组同一维数组一样,同样存在默认值。
3. 二维数组的遍历
4. 二维数组的内存分配
5. 二维数组的其他定义方式
a) 声明并分配空间
数据类型[] [] 数组名 = new 数据类型[高维] [低维];
b) 声明并初始化【繁】
数据类型[] [] 数组名 = new 数据类型[] []{{值1,值2},{值1,值2},{值1,值2}};
注意:支持换行
不能出现高维数和低维数
c) 声明并初始化【简】
数据类型[] [] 数组名 = {{值1,值2},{值1,值2},{值1,值2}};
注意:不支持换行
6. 不规则的二维数组
只给定高维长度,不给定低维长度。
注意:在指定数组长度时,不能只给定低维长度,不给定高维长度。
类型[] [] 数组名 = {{值1,值2},{值1,值2},{值1,值2}};