Java 数组相关内容及其完结(欢迎点赞 + 收藏 )^ ^
数组基本操作
声明数组并没有分配内存
数组元素类型 数组名字[];
数组元素类型[] 数组名字;
分配内存:数组名字 = new 数组元素类型[数组元素个数]
在实际操作中,习惯 声明,分配空间,初始化一体操作,比如:
int[] arr = new int{1,2,3,4};
int[] arr = {1,2,3,4};
二维数组和一维数组基本相同,只是注意一种情况
int[][] arr = new int[3][4]; //默认为零
int[][] arr = new int[][]{{1,2,3,4},{2,3,4,5},{3,4,5,6}};
//以下错误
int[][] arr = new int[3][4]{{1,2,3,4},{2,3,4,5},{3,4,5,6}};
数组中一个重要的Arrays类
数组填充
import java.util.Arrays;
fill(int[] a,(int fromIndex,int toIndex),int value) , 将int 分配给指定元素的值
import java.util.Arrays;
public class Text {
public static void main(String[] args) {
text1();
}
static void text1(){
int[] arr = new int[]{1,2,3,4};
for(int i:arr){
System.out.print(i);
}
Arrays.fill(arr,2,4,9);
for(int i:arr){
System.out.print(i);
}
}
}
数组排序
Arrays.sort(object)
复制数组
Arrays.copyOf(arr,int newlength); Arrays.copyOfRange(arr,int fromIndex,int toIndex);
import java.util.Arrays;
public class Text {
public static void main(String[] args) {
text1();
}
static void text1() {
int[] arr = new int[]{1,2,3,4,5,6,7,8};
int[] arr2 = Arrays.copyOf(arr,4);
for(int x:arr2){
System.out.print(x);
}
System.out.println();
int[] arr3 = Arrays.copyOfRange(arr,2,10);
for (int x:arr3
) {
System.out.print(x);
}
}
}
注意,超出的长度整形用 0 填充,但是 字符型用 null 填充
数组查询
Arrays 中的 binarySearch() 方法,二分法搜索
binarySearch(object[],object key) 和 binarySearch(object[],int fromIndex,int toIndex,object key)
import java.util.Arrays;
public class Text {
public static void main(String[] args) {
text1();
}
static void text1() {
//二分法查找
int[] arr = new int[]{21,3,12,43,56,76,23,45};
Arrays.sort(arr);
for (int x:arr
) {
System.out.print(x + " ");
}
System.out.println();
int i = Arrays.binarySearch(arr,21);
System.out.println(i);
i = Arrays.binarySearch(arr,42);
System.out.println(i);
i = Arrays.binarySearch(arr,99);
System.out.println(i);
System.out.println(arr.length);
}
}
结果:
3 12 21 23 43 45 56 76
2
-5
-9
8