【Java专题】数组

在Java中,数组是用来存放同一种数据类型的集合,注意只能存放同一种数据类型。

声明语法

1
2
3
4
5
6
7
8
// 声明数组的语法格式,不赋值,每一项都是各数据类型对应的默认值
数据类型 [] 数组名称 = new 数据类型[数组长度];

// [] 也可以放在数据名称后边,但是整体不直观,不推荐这种写法
数据类型 数组名称 [] = new 数据类型[数组长度];

// 声明数组的同时赋值,数组长度由元素个数决定
数据类型 [] 数组名称 = {数组元素1,数组元素2,......}

特点

  • 插入快,数组是连续的内存空间,插入一个元素只需要将该元素放在数组末尾即可,不需要移动其他元素
  • 查找慢,数组是无序的,查找一个元素需要遍历整个数组,直到找到该元素或者遍历完整个数组
  • 删除慢,给定一个元素值,我们需要先找到那个元素,然后将它后边的所有元素都向前移动一位,最后将数组末尾的元素置空
  • 定长,数组的长度在创建时就已经确定了,不能动态改变长度
  • 同类型,数组只能存放同一种数据类型的元素,如果需要存放不同类型的元素,可以使用Object类型的数组,但不推荐这种做法,因为会导致类型安全问题

代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class TestArray {
public static void main(String[] args) {
int[] arr1 = new int[3];
System.out.println(Arrays.toString(arr1)); // [0, 0, 0]

// 不推荐的声明写法
int arr2[] = new int[3];
arr2[2] = 3;
// arr2[99] = 100; // 索引越界,编译会报错
System.out.println(Arrays.toString(arr2)); // [0, 0, 3]
// System.out.println(arr2[99]); // 索引越界,运行时会抛出 ArrayIndexOutOfBoundsException

int[] arr3 = { 1, 2, 3};
System.out.println(Arrays.toString(arr3)); // [1, 2, 3]

// 普通 for 循环
for(int i = 0; i < arr3.length; i++) {
System.out.println(arr3[i]);
}
// 增强型 for 循环(也称为"for-each"循环)
for (int val : arr3) {
System.out.println(val);
}
}
}