数组的相关操作(Java)
数组的定义
数组可以看成是相同元素类型的一个集合,在内存是一段连续的空间
数组是引用类型,数组的引用变量(数组名)存储在栈上,而数组对象(包含其所有元素)作为一个整体存储在堆上
要想理解这个知识⬆️,先得理解下栈和堆的定义~⬇️
对于上述概念,图片如下⬇️
一维数组的创建与初始化
数组的创建
T[] 数组名 = new T[N];
//T是数组中存放元素的类型
//T[] 表示数组的类型
//N 表示数组的长度
int[] arr1 = new int[10];//创建了大小为10的整形数组double[] arr2 = new double[10];//创建了大小为10的double类型数组long[] arr3 = new long[10];
数组的初始化
数组的初始化分为动态初始化和静态初始化
动态初始化
在初始化的时候,直接指定数组的元素个数
int[] arr = new int[10];
静态初始化
在初始化的时候,不指定数组的元素个数
// 静态初始化int[] arr = {1,2,3,4,5,6};
// 也可以这样写int[] arr4= new int[]{1,2,3,4};
如果数组没有被初始化,则会有默认值
int[] arr1 = new int[10];double[] arr2 = new double[10];String[] arr3 = new String[10];System.out.println(Arrays.toString(arr1));System.out.println(Arrays.toString(arr2));System.out.println(Arrays.toString(arr3));
执行结果
具体是下列表格
数组的遍历
第一种方式
int[] arr = {1,2,3,4,5,6};for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+" ");}System.out.println();
第二种方式
int[] arr = {1,2,3,4,5,6};for(int x : arr){System.out.print(x+" ");System.out.println();}
数值中的相关的操作
Arrays.toString()
这个是用来打印数组的
int[] arr = {1,2,3,4,5,6};Arrays.toString(arr);
输出结果
如果直接打印数组名会出现什么样的结果
为什么呢?⬇️
因为数组名是引用类型,数组名是以地址的形式存储在栈上。⬆️
Arrays.fill()
这个是用来填充数组的⬆️
int[] arr1 = new int[10];Arrays.fill(arr1,6);System.out.println(Arrays.toString(arr1));
输出结果
Arrays.sort()
int[] array = {6,2,3,9,5,4};
// 默认是升序Arrays.sort(array);System.out.println(Arrays.toString(array));
Arrays.copyof()
int[] array = {6,2,3,9,5,4};int[] newArray = Arrays.copyOf(array, array.length);System.out.println(Arrays.toString(newArray));
实参的要求⬇️
运行结果
Arrays.copyofRange()
int[] array = {6,2,3,9,5,4};int[] newArray = Arrays.copyOfRange(array, 0, 3);System.out.println(Arrays.toString(newArray));
执行结果以及解释⬇️
二维数组的创建与初始化
数组的创建
int[][] array = new int[3][3];double[][] array1 = new double[3][3];
数组的初始化
// 动态初始化double[][] array1 = new double[3][3];
// 静态初始化int[][] array2 = {{1,2,3},{1,4,5}};
二维数组的遍历
int[][] array2 = {{1,2,3},{1,4,5,6},{6,2}};for (int i = 0; i <array2.length ; i++) {for (int j = 0; j < array2[i].length; j++) {System.out.print(array2[i][j]+" ");}System.out.println();}
运行结果
解释