点击可进入 本文章b站对应视频
获取数组的长度
arr.length
如果是一位数组 直接获取数组长度
如果是二维数组
先获取某一列然后再获取数组某一列的长度
直接使用获取的是数组的行数
例子
一维数组
int[] arrA={1,2,3};
System.out.println(arrA.length);//3
二维数组
int[][] arrB = {{1, 2}, {2, 3, 4}};
System.out.println(arrB.length);//2
System.out.println(arrB[0].length);//2
System.out.println(arrB[1].length);//3
打印数组
Arrays.toString(arr);
int[] intArray = { 1, 2, 3, 4, 5 };
String intArrayString = Arrays.toString(intArray);
System.out.println(intArrayString);//[1, 2, 3, 4, 5]
因为在学习数据结构的时候会经常用到
所以 我把 具体代码写了出来
private static String toSring(int[] arr) {
String arrs="[";
for (int i = 0; i <arr.length ; i++) {
arrs+=arr[i];
if (i+1<arr.length){
arrs+=",";
}
}
arrs+="]";
return arrs;
}
数组扩容
注意 需要导包 import java.util.Arrays;
Arrays.copyOf(需要拷贝的数组名,拷贝后的长度);
返回拷贝扩容
拷贝后的长度如果小于原数组则只是截取部分
拷贝后的长度如果大于原数组 ,则多余部分为默认值
该方法并不会使原数组发生改变
int[] arrA={1,2,3};
System.out.println(Arrays.toString(arrA));// [1,2,3]
int[] arrB=Arrays.copyOf(arrA,arrA.length-1);
System.out.println(Arrays.toString(arrB));[1,2]
int[] arrC=Arrays.copyOf(arrA,arrA.length*2);
System.out.println(Arrays.toString(arrC));//[1,2,3,0,0,0]
System.out.println(Arrays.toString(arrA));//[1,2,3]
Arrays.copyOfRange(arr, int fromIndex, int toIndex);
复制数组范围为从fromIndex到(toIndex-1);
int[] arrA={1,2,3};
int[] arrB=Arrays.copyOfRange(arrA,1,3);
System.out.println(Arrays.toString(arrB));//[2,3]
数组合并
System.arraycopy(arr, 1, arr2, 3, arr.length-1);
第一个元素 表示需要复制的原数组
第二个元素 代表从原数组的哪一个元素开始复制(下标)
第三个元素 目标数组
第四个元素 从目标数组的哪一个元素开始粘贴原数组的数据
第五个元素 复制原数组的长度是多少
int[] arr= {0,1,2,3,4};
int[] arr2= {10,20,30,40,50,60,70,80,90};
System.arraycopy(arr, 1, arr2, 3, arr.length-1);
System.out.println(Arrays.toString(arr2));
//[10, 20, 30, 1, 2, 3, 4, 80, 90]
如果要合并两个数组
只需要先扩容然后复制
int[] arr= {0,1,2,3,4};
int[] arr2= {10,20,30,40,50,60,70,80,90};
arr2=Arrays.copyOf(arr2,arr.length+arr2.length);
System.arraycopy(arr, 0, arr2, arr2.length-arr.length, arr.length);
System.out.println(Arrays.toString(arr2));
//[10, 20, 30, 40, 50, 60, 70, 80, 90, 0, 1, 2, 3, 4]
数组排序
Arrays.sort(Object[] arr)
对指定对象数组根据其元素的自然顺序进行升序排列。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。
注意 :该方法是在原数组上进行修改
int[] arrA={3,2,1};
Arrays.sort(arrA);
System.out.println(Arrays.toString(arrA));//[1,2,3]
Arrays.equals(long[] a, long[] a2)
如果两个指定的 long 型数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。
int[] arrA = {1, 2, 3};
int[] arrB = {4, 5, 6};
int[] arrC = {1, 2, 3};
System.out.println(Arrays.equals(arrA,arrB));//false
System.out.println(Arrays.equals(arrA,arrC));//true
数组查询
Arrays类的binarySearch()方法—用二分搜索法搜索指定数组—返回要搜索元素的索引值—适用于各种类型数组
-----必须在调用之前对数组进行排序(通过sort()方法)—如果数组包含多个带有指定值的元素,则无法保证找到的是哪一个
1)Arrays.binarySearch(Object[], Object key);
如果key包含在数组中,返回索引值;否则返回“-1”或“-”(插入点)
插入点:搜索键将要插入数组的那一点,即第一个大于此键的元素索引
2)Arrays.binarySearch(Object[], int fromIndex,int toIndex,Object key);
搜索范围为从fromIndex到(toIndex-1)
int[] arrA={1,2,4,5,6};
Arrays.sort(arrA); //必须先将数组排序
System.out.println(Arrays.binarySearch(arrA,1));//0
System.out.println(Arrays.binarySearch(arrA,3));//-3
System.out.println(Arrays.toString(arrA));
上一篇文章数组的定义
本文参考了
That_Good_Good
菜鸟教程
马继小哥哥
等 人的文章