数组
数组的创建
动态数组的创建
语法格式:
一、数据类型 [ ] 数组名 = new 数据类型[数组长度];(建议)
二、数据类型 数组名[ ] = new 数据类型[数组长度];
三、或者先声明,在赋值也可以
int[] arr3 = new int[5];
int[] arr4 = new int[]{};
int[] arr5 = {};
静态数组的创建
语法格式:
一、数据类型 [ ] 数组名 = new 数据类型[]{元素1, 元素2, 元素3,…};
二、数据类型[] 数组名 = {元素1, 元素2, 元素3,…};
int[] arr = new int[]{1, 2, 3, 4};
int[] arr1 = {1, 2, 3, 4};
int[] arr2;
arr2 = new int[]{1, 2, 3};
// 注意:当我们在定义数组的时候,如果声明和赋值拆开写,
// 那么就必须要写完全版本;
注意:
-
a、严禁在等号左边的中括号里面写数字;
-
b、严禁在等号右边的中括号里面写了数字还写大括号的;
数组的基本操作
赋值 —> arr [index] = XXX;
int [] arr =new int[5];
arr [0]=11; //给第一个元素赋值
arr [1]=12; //给第二个元素赋值
//修改第二个元素的值
arr [1] =13;
取值 —> arr [index]
nt [] arr={1,2,3,4};
//获取第一个元素
int num1 = arr [0];
获取长度 ---->数组名 .length
int [] arr = {1,2,3,4};
System.out.println(arr.length); //输出4
注意:
-
数组长度是 数组名.length
-
字符串长度是 变量名.length()
遍历
方式一:推荐写法
int[] arr = {1, 2, 3, 4};
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
方式二: fareach 循环
int[] arr = {1, 2, 3, 4};
for (int i : arr) {
System.out.println(i);
}
优点:语法简洁,比普通for循环的效率高。
缺点:相比较普通for循环,增强for循环无法获得数组下标,
且循环过程中,数组结构不能改变(元素的增加和删除)
数组的默认初始化
1、整数类型都为 0
2、浮点型为0.0
3、字符型为“\u0000”
4、布尔型为false (未赋值都为false)
5、引用数据类型为null
数据类型的传递
- 基本数据类型的传递------->不会改变值
int a =10;
int b =a;
b=20;
System.out.println(a);//10
- 引用数据类型的传递------->赋值的是地址值
int [] arr={1,2,3};
int [] arr1=arr;
arr2[0]=4;
System.out.println(arr); // [I@4554617c
Array工具的使用
- 1、toString
返回指定数组内容的字符串表示形式。
int[] arr1 = new int[]{1, 2, 3, 4};
String a = Arrays.toString(arr1);
System.out.println(a);//[1,2,3,4]
- 2、二分法查找( binarySearch)
int[] arr = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
// 查找6在数组中的索引位置
int index = Arrays.binarySearch(arr, 6);
System.out.println(index); // 输出:6
// 查找18在数组中的索引位置
index = Arrays.binarySearch(arr, 18);
System.out.println(index); // 输出:-11,证明没找到
- 3、equals判断
判断两个数组中的内容是否相同。
int[] arr1 = {3, 5, 1, 7, 6, 2, 4};
int[] arr2 = {3, 5, 1, 7, 6, 2};
boolean b= Arrays.equals(arr1,arr2);
System.out.println(b); //false
- 4、sort排序
// 对数组中的内容进行升序排序
int[] arr = {3, 5, 1, 7, 6, 2, 4};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr)); // 输出:[1, 2, 3, 4, 5, 6, 7]
- 5、fill 填充数组
int[] arr = new int[5];
Arrays.fill(arr, 89);
System.out.println(Arrays.toString(arr)); // 输出:[89, 89, 89, 89, 89]
- 6、数组拷贝 (copyOfRange)
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8};
int[] newArr = Arrays.copyOf(arr, 3); //从数组的第一个元素开始拷贝[1,2,3]
int[] newArr = Arrays.copyOfRange(arr, 2, 5); //从指定范围拷贝数组
System.out.println(Arrays.toString(newArr)); // 输出:[3, 4, 5]