1.数组的基本概念
1.1什么是数组
相同类型元组组成的一个集合,在内存中存放在一段连续的空间当中。每个空间都有自己独有的编号。
1.2创建数组
类型[] 数组名=new 类型[元素的个数];
比如int[] a=new int[10];
这是一个名字叫a的int类型的数组,里面存放了10个int类型的数字。下表从0到9;
1.3静态初始化
如果创建好后一个一个添加内容很麻烦,这时就可以对数组进行静态初始化
比如 int[] a=new int[]{0,1,2,3,4,5,6,7,8,9};
注意:静态初始话可以不用指定数组的长度,但是编译器在编译时会根据{}当中的内容来确定数组的长度
java当中 如果不初始化只是创数组,那么编译器会自动初始化,byte,short , int,long都自动初始化为0;float,double自动初始化为0.0;char初始化为/u0000;boolean初始化为false;
2遍历数组
int a[]=new int[]{1,2,3,4,5,6,7,8,9};
for(int i=0;i<=8;i++){
System.out.println(a[i);
for(int i:a){
System.out.println(i);
3.java当中和数组有关的一些方法
3.1.clone()方法: 创建并返回此对象的副本。
int [] arr = {7, 8, 9};
int [] cloneArr = arr.clone();
cloneArr[2] = 888;
System.out.println(Arrays.toString(arr));//[7, 8, 9]
System.out.println(Arrays.toString(cloneArr));//[7, 8, 888]
3.2equals()方法: 指示一些其他对象是否等于此。
int[] arr1 = {123};
int[] arr2={123};
System.out.println(arr1.equals(arr2));//false 因为这两个数组没有指向同一个内存地址
int[] arr3=arr1;
System.out.println(arr1.equals(arr3));//true
3.3Arrays.equals() 如果两个指定的数组彼此 相等 ,则返回true.
int[] arr1 = {123};
int[] arr2={123};
System.out.println(Arrays.equals(arr1,arr2));//true
3.4hashCode()方法: 根据指定数组的内容返回哈希码。
Arrays.hashCode() 方法:根据指定数组的内容返回哈希码。
int[] arr1 = {1};
System.out.println(arr1.hashCode());//1915503092
System.out.println(Arrays.hashCode(arr1));//32
3.5toString()方法: 返回对象的字符串表示形式。
Arrays.toString() 方法:返回指定数组的内容的字符串表示形式。
int[] arr = {1};
String arrString = Arrays.toString(arr);
System.out.println(arr);// [I@722c41f4 直接输出,为内存地址
System.out.println(arrString );// [1]
3.6getClass()方法: 返回此 Object的运行时类。
int a[][] = {{1},{2}};
System.out.println(a.getClass());//class [[I
System.out.println(a.getClass().getName());//[[I 几维数组就有几个[
3.7Arrays.asList() 方法: 返回由指定数组支持的固定大小的列表。 或判断数组中是否有指定字符串
String[] arr={"1","2","3"};
//作用一
System.out.println(Arrays.asList(arr));//[1, 2, 3]
//作用二
System.out.println(Arrays.asList(arr).contains("2"));//true
3.8Arrays.binarySearch() 方法: 使用二进制搜索算法搜索指定值的指定数组内容。要求被查找的一维数组必须是有序的,否则结果是错误的
int[] a = {5,1,2,3,6,4};
Arrays.sort(a);
System.out.println(Arrays.binarySearch(a,4));
System.out.println(Arrays.binarySearch(a,1,5,4));
对查询的东西指定范围(1,5)为范围
3.9Arrays.copyOf() 方法: 复制指定的数组,用零截取或填充(如有必要),以便复制具有指定的长度。
int [] arr = {1,9,3,7};
int [] arr1=Arrays.copyOf(arr,6);
System.out.println(Arrays.toString(arr1));//[1, 9, 3, 7, 0, 0]
3.10Arrays.copyOfRange() 方法: 将指定数组的指定范围复制到新数组中。
int [] arr = {1,9,3,7};
int [] arr2=Arrays.copyOfRange(arr,1,3);//范围包含1不含3
System.out.println(Arrays.toString(arr2));//[9, 3]
3.11Arrays.deepEquals() 方法: 如果两个指定的数组彼此 深度相等 ,则返回 true 。
int a[][] = new int[][]{{0}, {1, 2, 3, 5, 4}};
int b[][] = new int[][]{{0}, {1, 2, 3, 5, 4}};
int c[][] = new int[][]{{0}};
System.out.println(Arrays.deepEquals(a, b));//deepEquals适用于多层次,true
System.out.println(Arrays.deepEquals(a, c));//false
3.12Arrays.deepHashCode() 方法: 根据指定数组的“深度内容”返回哈希码。
String[] arr={"a","b","c"};
int a=Arrays.deepHashCode(arr);
System.out.println(a);//126145
3.13Arrays.fill() 方法: 将指定的字节值分配给指定字节数组的每个元素。
int[] arr=new int[3];
Arrays.fill(arr,6);
System.out.println(Arrays.toString(arr));//[6, 6, 6]
3.14Arrays.parallelSort() 方法: 按照数字顺序排列数组的指定范围。
int[] a = {1,8,51,13,46,11,22};
Arrays.parallelSort(a);
System.out.println(Arrays.toString(a));//[1, 8, 11, 13, 22, 46, 51]
3.15Arrays.sort() 方法: 按照数字顺序排列指定的数组。
//作用一
int[] arr1={1,9,3,7};
Arrays.sort(arr1);
System.out.println(Arrays.toString(arr1));//[1, 3, 7, 9]
//作用二
int[] arr2={1,9,3,7,2,5};
Arrays.sort(arr2,1,4);//范围包含1不包4
System.out.println(Arrays.toString(arr2));//[1, 3, 9, 7, 2, 5]
3.16length()方法: 获得此数组的长度
int[] arr={1,5,6,8,2,3,7};
System.out.println(arr.length);