本文是《Java 入门指南》的第十九篇文章,介绍了 Java 的 数组。
数组
描述:
数组是相同数据的有序集合。
数组需要满足以下的条件:
- 数据都是同一个类型。
- 按照一定的顺序进行排序。
其中,每一个数据,都被称为数组元素,可以通过数组下标访问每一个数组元素。
数组的长度是确定的(不可改变的) , arrayName.length
表示数组的长度。
数组的下标是从0开始的,数组的下标的范围是 [0,arryName.length)。
一旦数组的元素不在范围内,就会出现 ArrayIndexOutOfBoundsException(数组下标越界异常)。
定义:
//数据类型[] 数组名(推荐)
dataType[] arrayName;
//数据类型 数组名[]
dataType arrayName[];
建议使用 dataType[] arrayName;
的格式定义一个数组,dataType arrayName[];
的格式来自于 C/C++ 语言,是为了方便 C/C++ 程序员理解 Java 语言。
实例:
示例代码(数组的定义):
package com.jianrry.test;
public class Test {
public static void main(String[] args) {
//定义一个 int 类型的数组 number。
int[] number;
//初始化 int 类型的数组 number,设置数组大小为10。
number = new int[10];
//为 int 类型的数组 number 赋值。
number[0]=1;
number[1]=2;
number[2]=3;
number[3]=4;
number[4]=5;
number[5]=6;
number[6]=7;
number[7]=8;
number[8]=9;
number[9]=10;
//数组的下标是从0开始的,数组的下标的范围是 [0,arryName.length)。
//number.length 表示数组 number 的长度。
for (int i = 0; i < number.length; i++) {
System.out.println(number[i]);
}
}
}
运行结果(数组的定义):
1
2
3
4
5
6
7
8
9
10
示例代码(数组的初始化):
package com.jianrry.test;
public class Test {
public static void main(String[] args) {
//静态初始化:定义一个数组,并给数组中的元素赋值。
int[] number1={1,2,3,4,5,6,7,8,9,10};
System.out.println("number1[0]="+number1[0]);
//动态初始化:定义一个数组,并设置数组的长度。
//动态初始化包含了默认初始化,即初始化时分配内存空间,此时数组中的元素的值都是数据类型的默认值。
int[] number2=new int[10];
number2[0]=1;
number2[1]=2;
number2[2]=3;
number2[3]=4;
number2[4]=5;
number2[5]=6;
number2[6]=7;
number2[7]=8;
number2[8]=9;
number2[9]=10;
System.out.println("number2[0]="+number2[0]);
//默认初始化:定义一个数组,数组中的元素的值是数据类型的默认值。
//数组是引用类型,数组中的元素相当于类中的实例变量。
//数组初始化时,自动分配内存空间,数组中的元素会按照实例变量的方式被隐式初始化。
int[] number3=new int[10];
System.out.println("number3[0]="+number3[0]);
}
}
运行结果(数组的初始化):
number1[0]=1
number2[0]=1
number3[0]=0
示例代码(数组的使用):
package com.jianrry.test;
public class Test {
public static void main(String[] args) {
//定义一个 int 类型的数组,并给数组中的元素赋值。
int[] number={1,2,3,4,5,6,7,8,9,10};
//打印输出数组。
print(number);
//打印输出反转的数组。
print(reverse(number));
}
//int 类型的数组作为参数。
public static void print(int[] arr){
//for each 循环(增强 for 循环)。
for (int i : arr) {
System.out.print(i+"\t");
}
System.out.print("\n");
}
//int 类型的数组作为返回值。
public static int[] reverse(int[] arr){
int[] temp=new int[arr.length];
for (int i = 0,j = temp.length - 1; i < arr.length; i++,j--) {
temp[j]=arr[i];
}
return temp;
}
}
运行结果(数组的使用):
1 2 3 4 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1
多维数组
描述:
多维数组可以视为数组的数组,本质上是一个特殊的数组,里面的每一个元素都是一个数组。
以二维数组为例,二维数组是一个特殊的一维数组,里面的每一个元素都是一个一维数组。
定义:
以二维数组为例:
//数据类型[][] 数组名(推荐)
dataType[][] arrayName;
//数据类型 数组名[][]
dataType arrayName[][];
建议使用 dataType[][] arrayName;
的格式定义一个数组,dataType arrayName[][];
的格式来自于 C/C++ 语言,是为了方便 C/C++ 程序员理解 Java 语言。
实例:
示例代码:
package com.jianrry.test;
public class Test {
public static void main(String[] args) {
//定义一个 int 类型的数组 number,并给数组中的元素赋值。
int[][] number={{1,2},{3,4},{5,6},{7,8},{9,10}};
//打印输出二维数组。
print(number);
}
//int 类型的二维数组作为参数。
public static void print(int[][] arr){
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[0].length; j++) {
System.out.print(arr[i][j]+"\t");
}
System.out.print("\n");
}
}
}
运行结果:
1 2
3 4
5 6
7 8
9 10
Arrays 类
描述:
Arrays 类是一个工具类,能够方便地操作数组。
有以下的功能:
- 将数组转化为字符串:通过
toString
方法。 - 对数组进行排序:通过
sort
方法。 - 对数组进行赋值:通过
fill
方法。 - 对数组进行比较:通过
equals
方法。 - 查找数组的元素:通过
binarySearch
方法。
实例:
示例代码:
package com.jianrry.test;
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
int[] number={1,2,3,6,9,8,7,4,5};
//将数组转换为字符串。
System.out.println(Arrays.toString(number));
//对数组进行排序,默认升序。
Arrays.sort(number);
System.out.println(Arrays.toString(number));
//对数组进行赋值。
Arrays.fill(number,0);
System.out.println(Arrays.toString(number));
//对数组进行比较。
int[] number2={1,2,3,4,5,6,7,8,9};
System.out.println(Arrays.equals(number,number2));
//查找数组的元素。
System.out.println(Arrays.binarySearch(number2,3));
}
}
运行结果:
[1, 2, 3, 6, 9, 8, 7, 4, 5]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 0, 0, 0, 0, 0, 0, 0, 0]
false
2