JavaSE - 数组
本节学习目标:
- 掌握一维数组的创建和使用方法;
- 掌握二维数组的创建和使用方法;
- 掌握对数组的基本操作;
- 掌握对数组的排序操作。
1. 数组概述
数组(Array),是多个相同类型的数据按一定顺序排列的集合,使用一个标识符命名,并通过索引(或下标)的方式对这些数据进行统一管理。
数组的常见概念:
- 数组名:一个数组的标识符,通过数组名才能访问数组中的数据;
- 索引(或下标):数组中每个数据所处的位置,通过下标才能访问数组中具体某个数据;
- 元素:数组中数据的统称,一个数据称为一个元素;
- 数组的长度:数组中元素的个数。
数组的特性:
- 数组本身是引用数据类型,数组里面的元素可以是任何数据类型;
- 数组里面的元素是有序排列的;
- 创建数组对象会在内存中开辟一整块连续的空间,而引用数组实际上是引用这块连续空间的首地址;
- 数组的长度一旦确定就不能更改;
- 数组内的某个元素可以通过此元素的索引(或下标)调用。数组本身是一个简单的线性序列,所以访问速度很快。
数组的类型:
- 按维度分:一维数组、二维数组…;
- 按元素数据类型分:基本数据类型数组(如整型数组)、引用数据类型数组(如字符串数组)。
2. 一维数组
当数组中的每个元素都只带有一个下标时,称这样的数组为一维数组。
2.1 一维数组的创建和初始化
数组由于是引用数据类型,初始化需要使用new
关键字。
声明一维数组有两种方式:
int intArray[];
String[] strArray;
中括号([]
)指明该变量是一个数组类型变量,单个中括号表示一维数组。
初始化一维数组有两种方式:
- 动态初始化:先使用
new
关键字为数组分配内存,再为数组的元素赋值:
int intArray[] = new int[4]; // 分配内存必须指定数组的长度
intArray = {
87, 64, -12, 6847}; // 对元素赋值时,元素个数不可超过数组的长度
- 静态初始化:使用
new
关键字为数组分配内存的同时为数组的元素赋值:
// 动态初始化不需指定数组长度,为多少个元素赋值,数组的长度就为多少。
String[] strArray = new String[]{
"Java", "Hello", "World"};
数组一旦初始化完成,数组的长度就确定了。
2.2 一维数组的使用及元素的访问
数组使用索引(或下标)访问数组中的元素:
public class OneDimensionArray {
public static void main(String[] args) {
int[] intArray = new int[]{
1, 2, 3, 4, 5};
for (int index = 0; index < intArray.length; index++) {
// 数组对象的length属性为该数组的长度
System.out.println(intArray[index]); // 使用索引访问数组中的元素
}
}
}
运行结果:
1
2
3
4
5
- 数组的索引(或下标)是从0开始的,到数组的长度-1结束,如果访问超过长度的索引,则会报错(
java.lang.ArrayIndexOutOfBoundsException
,数组越界异常)。
2.3 数组元素的默认初始化值
如果数组使用new
关键字分配内存之后,并没有对其元素进行赋值,此时对数组进行遍历,输出它的元素的值,值为多少?
每个类型的数组都有其默认初始化值:
- 整型数组:默认值为
0
; - 浮点型数组:默认值为
0.0
; - 字符型数组:默认值为
\u0000
(空字符,不是空格); - 布尔型数组:默认值为
false
; - 引用数据类型(包括字符串):默认值为
null
。
编写代码进行测试:
public class DefaultElement {
public static void main(String[] args) {
// 整型
int[] intArray = new int[1];
System.out.println("整型数组元素的初始化值为" + intArray[0] + ";");
// 浮点型
double[] doubleArray = new double[1];
System.out.println("浮点型数组元素的初始化值为" + doubleArray[0] + ";");
// 字符型
char[] charArray = new char[1];
System.out.println("字符型数组元素的初始化值为" + charArray[0] + ";");
System.out.println("字符型数组元素的初始化值为\\u0000吗?" + (charArray[0] == 0));
// 布尔型
boolean[] booleanArray = new boolean[1];
System.out.