前言

本文将介绍Java数组的创建与使用。


数组的概念

数组是相同类型数据的有序集合。
数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问他们

数组的初始化

动态初始化

语法:

1
int[] arrayA = new int[3];

可以拆分为两个步骤:

1
2
int[] arrayA;
arrayC = new int[3];

静态初始化

语法:

1
int[] arrayB = new int[] {5,15,25};

可以拆分为两个步骤:

1
2
int[] arrayB;
arrayB = new int[] {5,15,25};

静态初始化时可以简化书写:

1
int[] arrayB = {5,15,25};

内存分析

数组的特点

  • 其长度是确定的。数组一旦被创建,它的大小就是不可以改变的。

  • 其元素必须是相同类型,不允许出现混合类型。

  • 数组中的元素可以是任何数据类型,包括基本类型和引用类型。

  • 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。

  • 数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。

  • 关于数组边界:

    下标的合法区间:[0,length-1],如果越界就会报错。

    ArraryIndexOutOfBoundsException:数组下标越界异常!

数组的使用

for-Each 循环

适用于打印输出,不适合修改元素。

语法:

1
2
3
for(声明语句 : 表达式){
//代码句子
}

示例:

1
2
3
4
5
6
7
8
public class demo {
public static void main(String[] args) {
int [] numbers = {10, 20, 30, 40, 50};
for(int x : numbers ){
System.out.print( x + "\n");
}
}
}

输出结果:

1
2
3
4
5
10
20
30
40
50

数组做方法参数

数组可以作为参数传递给方法。

示例:求和传入数组(整形)的和

1
2
3
4
5
6
7
8
9
10
11
12
13
public class demo {
public static void sum(int[] array) {
int s = 0;
for (int i = 0; i < array.length; i++) {
s = s + array[i];
}
System.out.println(s); //10
}

public static void main(String[] args) {
sum(new int[]{1,2,3,4});
}
}

输出结果:

1
10

数组做返回值

示例:实现数组翻转

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class demo {
public static int[] reverse(int[] list) {
int[] result = new int[list.length];
for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
result[j] = list[i];
}
return result;
}

public static void main(String[] args) {
int[] result = reverse(new int[]{1,2,3,4});
for(int x : result){
System.out.println(x);
}
}
}

输出结果:

1
2
3
4
4
3
2
1

多维数组

示例:

1
2
3
4
5
6
7
int[][] arrays = new int[2][2];public class demo {
public static void main(String[] args) {
int[][] arrays = new int[2][2]; //创建二维数组
arrays[0][0] = 1;
System.out.println(arrays[0][0]); //1
}
}

输出结果:

1
1

结尾

参考:《Java数组详解》