『Java』数组
在学习数组之前先学习java.util.Arrays
类中的一个静态方法Arrays.toString()
。
该方法可以将传入的数组格式化为一个字符串,便于我们查看数组内容,例如:
import java.util.Arrays;
public class Dome001_Array {
public static void main(String[] args) {
int[] arr = new int[5]; // 定义一个数组
for (int i = 0; i < 5; i++) { // 为每个元素赋值
arr[i] = i + 2;
}
String res = Arrays.toString(arr);
System.out.println(res);
}
}
输出结果为:[2, 3, 4, 5, 6]
数组的定义与初始化
Java中数组索引从0开始。
方法一
定义方法:
数据类型[] 数组名字 = new 数据类型[长度];
例如:
int[] arr1 = new int[10];
String[] arr2 = new String[5];
该种方式定义的数组如果不进行初始化,不同类型数组具有不同的默认值:
import java.util.Arrays;
public class Dome001_Array {
public static void main(String[] args) {
int[] arr1 = new int[5];
System.out.println(Arrays.toString(arr1));
// 输出:[0, 0, 0, 0, 0]
// int数组默认值为0
char[] arr2 = new char[5];
System.out.println(Arrays.toString(arr2));
// 输出:[ , , , , ]
// char默认值为\u0000
double[] arr3 = new double[5];
System.out.println(Arrays.toString(arr3));
// 输出:[0.0, 0.0, 0.0, 0.0, 0.0]
// double默认值为0.0
String[] arr4 = new String[5];
System.out.println(Arrays.toString(arr4));
// 输出:[null, null, null, null, null]
// 引用类型默认值为空(null)
}
}
方法二
数据类型[] 数组名字 = new 数据类型[] {元素1, 元素2 ...};
第二个[]
中不能写长度值,{元素1, 元素2 ...}
是数组中存放的元素值,类型要跟数据类型[]
中的一致。
例如:
import java.util.Arrays;
public class Dome001_Array {
public static void main(String[] args) {
int[] arr = new int[]{1, 2, 3};
System.out.println(Arrays.toString(arr));
// 输出:[1, 2, 3]
}
}
方法三
数据类型[] 数组名字 = {元素1, 元素2 ...};
例如:
import java.util.Arrays;
public class Dome001_Array {
public static void main(String[] args) {
int[] arr = {1, 2, 3};
System.out.println(Arrays.toString(arr));
// 输出:[1, 2, 3]
}
}
数组的长度属性
每个数组都有长度,而且是【固定】的,通过数组名.length
可获得数组的长度。
public class Dome001_Array {
public static void main(String[] args) {
int[] arr = {1, 2, 3};
int len = arr.length;
System.out.println(len); // 3
}
}
数组常见异常
数组越界异常
public class Dome001_Array {
public static void main(String[] args) {
int[] arr = new int[10];
arr[10] = 1;
}
}
产生ArrayIndexOutOfBoundsException
数组越界异常:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 10 out of bounds for length 10
at cn.xxmmqg.Array.Dome001_Array.main(Dome001_Array.java:8)
空指针异常
public class Dome001_Array {
public static void main(String[] args) {
int[] arr = new int[10];
arr = null;
int len = arr.length;
}
}
产生NullPointerException
空指针异常:
Exception in thread "main" java.lang.NullPointerException: Cannot read the array length because "arr" is null
at cn.xxmmqg.Array.Dome001_Array.main(Dome001_Array.java:9)