Java中数组的定义与使用
1、数组的定义方法1.1静态初始化int[ ] arr{1,2,3,4,5};1.2标准的完整写法int[ ] arrnew int[ ]{1,2,3,4,5};1.3动态初始化int[ ] arr new int[5];int[0]1;int[1]2;1.4先声明再创建int[ ] arr;arr new int[ ]{1,2,3,4,5};2.内部结构Java的数组是引用类型内存分为两部分一部分是栈内存另一部分是堆内存栈内存储存数组的引用地址堆内存储存真正的数组元素即数组变量存在栈里数组内容存在堆里so方法传递数组时传递的是地址在方法内修改引用数组的内容会使数组的原内容改变也可以在方法中创建一个新的数组将内容传递给新数组从而不改变原数组。3.数组的遍历3.1普通的for循环int[] arr{12345}; for (int i 0; i arr.length; i) { System.out.print(arr[i] ); }3.2增强for循环for(int x:arr){ System.out.print(x ); }3.3Arrays.toString()Arrays.toString() 是Java自带的工具能够快速的将数组中的内容以字符串的格式输出int[] arr{12345}; System.out.println(Arrays.toString(arr));输出结果4.数组中常用到的工具4.1数组转字符Arrays.toSting这个上面已经提到过了这里就不过多解释了4.2数组拷贝Arrays.copyOf代码示例import java.util.Arrays; public static void main(String[] args) { int arr[]{1,2,3,4,5,6}; int arr2[]Arrays.copyOf(arr,arr.length); System.out.println(Arrays.toString(arr2)); }输出结果此外java还提供了针对不同数据类型包括所有基本类型数组和泛型对象数组的重载版本如下图此外Java还提供了以下工具4.3数组排序Arrays.sort()int[] arr {5, 2, 8, 1}; Arrays.sort(arr); System.out.println(Arrays.toString(arr)); // 输出[1, 2, 5, 8]4.4二分查找Arrays.dinarySearch()import java.util.Arrays; public static void main(String[] args) { int[] arr{1,2,3,4,5,6,7,8,9,10}; int ret Arrays.binarySearch(arr,5); System.out.println(ret); }输出结果二分查找的前提是数组必须是有序的。若数组是无序的可以先使用Arrays.sort对数组进行排序4.5数组比较Arrays.equals()int[] arr1 {1, 2, 3}; int[] arr2 {1, 2, 3}; System.out.println(Arrays.equals(arr1, arr2)); // true4.6数组的填充Arrays.fill()public static void main(String[] args) { int [] arrnew int[10]; Arrays.fill(arr,10); System.out.println(Arrays.toString(arr)); //也可以选择部分填充 Arrays.fill(arr,2,4,6); //下标2-3填充为6 System.out.println(Arrays.toString(arr)); }输出结果5.二维数组5.1二维数组的定义5.1.1静态初始化int[][] arr1{ {1,2,3}, {2,3,4}, {3,4,5} };5.1.2动态初始化int[][] arr2new int[3][5]; arr2[2][3]2; arr2[2]new int[]{3,4,5};5.1.3完整初始化int[][] arr3new int[][]{ {1}, {2,3}, {3,4,5} };与C语言不同的是Java的数组的列可以省略行不可以省略。且C语言中二维数组的每一列的元素数量必须是统一的Java中的每行列数可以不一样。5.2 二维数组遍历5.2.1 for循环for (int i 0; i arr1.length; i) { for (int j 0; j arr1[i].length; j) { System.out.print(arr1[i][j] ); } System.out.println(); }5.2.2 加强for循环for(int[] n:arr1){ for(int m:n){ System.out.print(m ); } }5.2.3 结合Arrays.toString打印for (int i 0; i arr1.length; i) { System.out.println(Arrays.toString(arr1[i])); }