1. 一维数组
1.1. 数组的定义
阐述:
数组是在程序设计中为了方便处理, 把具有相同类型的若干变量,
按照有序的形式组织起来的一种数据形式, 这个集合被称作数组. 数组中的每一个数据称为数组元素, 元素以索引来表示其存放的位置,
索引从 0 开始, 步长是 1.定义:
- 方式1:
数组元素的类型[] 数组名;int[] ages;
- 方式2:
数组元素的类型 数组名[];int ages[];
- 方式1:
1.2. 数组初始化
初始化有两种方式, 但不论以哪种方式进行初始化,
一旦初始化完成, 数组的长度就固定了, 不能改变,
除非重新初始化, 因此数组的长度是固定的.
静态初始化
特点:
为每一个数组元素设置初始化, 数组的长度由系统决定.语法:
数组元素类型[] 数组名 = new 数组元素类型[]{元素1, 元素2 ....};
或数组元素类型[] 数组名 = {元素1, 元素2 ....};
- 示例
int[] ages = new int[]{1,2,3,4};
int[] ages = {1,2,3,4};
- 示例
动态初始化
- 特点:
先设置数组的长度, 之后再对数组元素进行添加. - 语法:
数组元素类型[] 数组名 = new 数组元素类型[数组长度];- 示例
int[] ages = new int[4];
- 示例
- 特点:
1.3. 数组基本操作
1.3.1. 获取/设置/遍历元素/数组长度/索引范围
- 获取元素:
元素类型 变量 = 数组名[索引] - 设置元素:
数组名[索引] = 要设置的值 - 遍历元素:
for(int index = 0; index < 数组名.length; i++){ sout(数组名[index]); }
- 数组长度:
int len = 数组名.length;
length 是属性, 不是方法 - 索引范围:
从 0 开始, 足以递增, 范围[0, 数组名.length - 1]
1.3.2. 操作数组常见异常
NullPointerException: 空指针/引用异常
- 异常原因: 数组未初始化就操作数组
ArrayIndexOutOfBoundException: 数组的索引越界异常
- 异常原因: 操作数组时填写的索引超出数组的索引范围
1.4. main 方法的数组参数
- main 方法是 static 修饰的, 直接使用当前类调用即可.
在底层是 JVM 通过 当前方法.main(实参) 进行调用的
main 方法的 string 数组参数, 其实是暴露给程序运行者的,
用于给程序传递一个数据信息. (一般不会去使用)
2. 多维数组
严格上来说, java 不存在多维数组的概念, 一般称之为数组中的数组
一维数组:
数组中的每个元素都是一个值(基本类型或引用类型的值, 数组除外)二维数组:
数组中的每个元素是一个一维数组, 每个一维数组的长度不必相同- 示例:
//静态初始化 int[][] arr = new int[][] { {1,2,3}, {4,5}, {6} }; //动态初始化 int[][] arr = new int[3][3];
- 示例:
三维数组:
数组中每个元素是一个二维数组, 每个二维数组的长度也不必相同
3. Java5 对数组的支持
3.1. 增强 for 循环-foreach 的浅析
作用:
迭代数组元素的时候, 只操作数组元素, 不需要去操作数组的索引语法:
循环定义中的定义的变量, 用来接收数组中的每个元素for(数组元素类型 变量 : 数组名){ //TODO }
备注:
实际上foreach
在底层其实是使用for
循环封装的,
反编译后实际上和for
循环一致
但此方法大多用于获取数组元素, 精确操作数组的元素,
还是使用for
循环较好.
3.2. 方法的可变参数
方法的可变参数其底层是由数组进行封装的
传递参数时可以每次传递任意不同数量的参数,
实际上反编译出来的结果是每次调用该方法的时候,
都会重新创建一个根据传递参数的数量决定长度的数组为了避免参数歧义, 可变参数必须作为参数表的最后一个参数使用
方法最多也只能有一个可变参数
4. 数组的一些封装好的方法
4.1. arraycopy 方法
- 作用:
用于数组间的拷贝, 将一个数组的值复制到另一个数组中 - 语法:
System.arraycopy(src, srcPos, dest, destPos, length);
- 参数表:
src
表示源数组srcPos
表示源数组中拷贝元素的起始位置dest
表示目标数组destPos
表示拷贝到目标数组的起始位置length
表示拷贝元素的个数
5. Arrays 工具类
- SUN 公司在 JDK 中提供了一个数组的工具类
Arrays
- 类中封装了各种操作数组的方法
5.1. 几个工具类中常用的方法
- 其它方法进行 API 查阅即可
5.1.1. toString 方法
- 返回指定数组内容的字符串表示形式,
字符串表示形式由数组的元素列表组成, 括在方括号[]中.
相邻元素用字符", "(逗号加空格)进行分割.
这些元素通过String.valueof()
转换为字符串, 如果数组为null
, 返回null
.
5.1.2. sort 方法
- 将数组元素由小到大进行排序, 并返回排序后的数组
sort(数组, 要排序的第一个元素的索引(包括), 要排序的最后一个元素的索引(不包括))
- 后两个参数是可选参数