- 数组是多个相同类型数据按一定顺序排列的集合,使用一个名字命名,通过编号的方式来对这些数据进行统一管理。
- 数组是引用数据类型,数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。
- 在内存中开辟一整块连续的空间,而数组名中引用的是这块连续空间的首地址。数组一旦初始化,长度就确定了,数组长度一旦确定不可修改。
1、数组元素的默认初始化值
- int:0;
- float: 0.0;
- char: 0 而不是 ‘0’,实际输出既不是null,也不是空格
- boolean:false
- String等引用类型:null,意思是空值,而不是 "null"
public class ArrayTest{
public static void main(String args[]){
int[] ids = new int[]{1001, 1002, 1003}; //静态初始化:数组的初始化和数组元素的赋值操作同时进行
String[] names = new String[5]; //动态初始化:数组的初始化和数组元素的赋值操作分开进行
System.out.println(ids.length); //数组长度
//遍历数组
for (int i = 0; i < ids.length; i++) {
System.out.println(ids[i]);
}
// int 型数组元素默认初始化为 0
char[] chs = new char[4];
for (int i = 0; i < chs.length; i++) {
System.out.println(chs[i]);
}
// String 型数组元素默认初始化为 null
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
}
}
2、多维数组
Java 语言支持多维数组的语法。比如二维数组,本质上是把一个数组作为另一个数组的元素,从而实现多维。
public class ArrayTest{
public static void main(String args[]){
int[] arr = new int[]{1, 2, 3};
int[][] arr2 = new int[][]{{1, 2, 3}, {4, 5}, {6, 7, 8}}; //静态初始化1,元素中数组长度可以不同
int[][] arr7 = {{1, 2, 3}, {4, 5}, {6, 7, 8}}; //静态初始化2
String[][] arr3 = new String[3][2]; //动态初始化1
String[][] arr4 = new String[3][]; //动态初始化2
String arr5[][] = new String[3][]; //动态初始化3
String[] arr6[] = new String[3][]; //动态初始化4
System.out.println(arr3); //[[Ljava.lang.String;@1b6d3586 地址值
System.out.println(arr3[0]); //[Ljava.lang.String;@4554617c 地址值
System.out.println(arr3[1]); //[Ljava.lang.String;@74a14482 地址值
System.out.println(arr3[1][0]); //null
System.out.println(arr6); //[[Ljava.lang.String;@1540e19d 地址值
System.out.println(arr6[0]); //null
System.out.println(arr6[1]); //null
System.out.println(arr6[1][0]); //编译不通过:java.lang.NullPointerException
}
}
3、Array 工具类
java.util.Array 类即为操作数组的工具类,包含了用来操作数组(比如排序和搜索)的各种方法。
import java.util.Arrays;
public class ArrayTest{
public static void main(String args[]){
int[] arr = new int[]{1, 2, 3, 4, 5, 6, 7, 8};
int[] arr2 = new int[]{1, 40, 3, 33, 5, 6, 7, 8};
boolean b1 = Arrays.equals(arr, arr2); //判断数组元素是否完全相等,结果为 true
System.out.println(b1);
System.out.println(Arrays.toString(arr)); //输出数组信息:[1, 2, 3, 4, 5, 6, 7, 8]
Arrays.fill(arr, 10); // 将数组元素全部填充或者变更为 10
System.out.println(Arrays.toString(arr)); // [10, 10, 10, 10, 10, 10, 10, 10]
Arrays.sort(arr2); // 数组排序
System.out.println(Arrays.toString(arr2)); // [1, 3, 5, 6, 7, 8, 33, 40]
int index = Arrays.binarySearch(arr2, 7); // Arrays.binarySearch使用前提是数组必须从小到大排列有序的
System.out.println(index); //-2
}
}