目录
数组是 Java 一种常见的数据结构,可以分为一维数组、二维数组以及多维数组。
数组是有序数据的集合,数组中的每个元素有相同的数据类型,可以用一个统一的数组名称和下标来唯一地确定数组中的元素。
使用 Java 数组,经过如下两个步骤:
(1)声明数组。
(2)分配内存给该数组。
创建数组
- 数据类型 数据名称[] ; //声明一维数组名称
-
- 数据名称 = new 数据类型[数组大小]; // 分配内存给数组
数据类型[] 数据名称 = new 数据类型[数组大小];
数据类型[] 数据名称 = {数据1,数据2,.....};
示例
- int score[];
- score = new int[3];
内存分配如图:

数组是非基本数据类型,因此数组变量指向的是内存分配的一个地址。
示例:
- public class Main {
- public static void main(String args[]) {
- int a[] = {1,2,3,4,5};
- for (int i = 0; i < a.length; i++) {
- System.out.print(a[i] +" ");
- }
- }
- }
控制台输出
1 2 3 4 5
- public class Main {
- public static void main(String args[]) {
- int a[] = {1,2,3,4,5};
- for (int i : a) {
- System.out.print(i+" ");
- }
- }
- }
- import java.util.Arrays;
-
- public class Main {
- public static void main(String args[]) {
- int a[] = {1,2,3,4,5};
- System.out.println(Arrays.toString(a));
- }
- }
- import java.util.Arrays;
-
- public class Main {
- public static void main(String args[]) {
- int a[] = {8,2,9,4,5};
- System.out.println("排序前 =" + Arrays.toString(a));
- Arrays.sort(a); // 排序
- System.out.println("排序后 =" + Arrays.toString(a));
-
- }
- }
控制台输出
- 排序前 =[8, 2, 9, 4, 5]
- 排序后 =[2, 4, 5, 8, 9]
- import java.util.Arrays;
-
- public class Main {
- public static void main(String args[]) {
- int a[] = { 8, 2, 9, 4, 5 };
- System.out.println("排序前 = " + Arrays.toString(a));
- for (int i = 0; i < a.length - 1; i++) {
- for (int j = 0; j < a.length - i - 1; j++) {
- if (a[j] > a[j + 1]) {
- // 交换
- int tem = a[j];
- a[j] = a[j + 1];
- a[j + 1] = tem;
- }
- }
- }
- System.out.println("排序后 = " + Arrays.toString(a));
- }
- }
控制台输出
- 排序前 = [8, 2, 9, 4, 5]
- 排序后 = [2, 4, 5, 8, 9]
- import java.util.Arrays;
-
- public class Main {
- public static void main(String args[]) {
- int a1[] = {1,2,3,4,5};
- int a2[] = {4,5,6,7,8,9};
- System.arraycopy(a1, 0, a2, 0, 3);
- System.out.println("a1 = " + Arrays.toString(a1));
- System.out.println("a2 =" +Arrays.toString(a2));
-
- }
- }
说明:System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
src:源数组。
srcPos:源数组拷贝下标位置。
dest:目标数组。
destPos:拷贝到目标数组开始位置。
length:拷贝源数组长度。
控制台输出
- a1 = [1, 2, 3, 4, 5]
- a2 =[1, 2, 3, 7, 8, 9]
- public class Main {
- public static void main(String args[]) {
- int a[] = { 8, 2, 9, 4, 5 };
-
- int max = a[0];
- int min = a[0];
- for (int i = 0; i < a.length; i++) {
- if(a[i] > max){
- max = a[i];
- }
- if(a[i] < min){
- min = a[i];
- }
- }
- System.out.println("最大值max="+max+" 最小值min="+min);
- }
- }
控制台显示
最大值max=9 最小值min=2
二维数组声明方式和一维数组类似,内存的分配也是一样用 new 关键字。
声明格式
- 数据类型 数据名[][];
- 数据名 = new 数据类型[行的个数][列的个数];
示例:
- public class Main {
- public static void main(String args[]) {
- int a[][] = {
- { 2, 3, 6 },
- { 8, 6, 7 }
- };
-
- for (int i = 0; i < a.length; i++) {
- for (int j = 0; j < a[i].length; j++) {
- System.out.print(a[i][j] + " ");
- }
- System.out.println();
- }
-
- }
- }
控制台输出
- 2 3 6
- 8 6 7
要想提高数组的维度,只要在声明数组的时候将索引与中括号再加上一组即可,所以三维数组的声明为 int a[][][],以此类推。