内容纲要
数组
存放多个数据的容器,里面可以是基本类型数据,也可以是引用类型数据。
数组本身是一种引用类型,并且数组内部的类型必须统一。
定义
数据类型[] 数组名 = new 数据类型[数组长度];
int[] arr = new int[5];
- 数据类型[] 数组名 = new 数据类型[]{数据1,数据2,…..}`
int[] arr = new int[] {1,2,3,4};
- 数据类型[] 数组名 = {数据1,数据2,…..}`
int[] arr = {1,2,3,4};
如果不确定数组里的内容用第一种定义,如果确定了用后两种定义。
并且在定义的时候会给固定数据类型的数据赋给初始值,前面变量与数据类型查看。
访问与赋值
使用数组名[索引值]来访问或赋值,索引值从0开始,并且不可超过数组长度,即索引值<数组长度。
public class Test {
public static void main(String[] args) {
int[] arr = new int[2];
arr[0] = 1;
arr[1] = 2;
System.out.println(arr[0]);
}
}
如果索引值>=数组长度会造成数组越界,编译异常。
数组引用
public class Test {
public static void main(String[] args) {
int[] arr = new int[1];
arr[0] = 1;
int[] arr1 = arr;
arr1[0] = 10;
System.out.println(arr[0]);//运行为10
System.out.println(arr1[0]);//运行为10
}
}
在数组中引用数组,如下所示
由于
arr
和arr1
的内存地址都是[I@6f539caf
是同一个数组,所以对arr1
赋值会覆盖arr
。
数组操作
获取数组的长度
数组名.length
来获取数组的长度
public class Test {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8,9,10};
System.out.println(arr.length);//10
}
}
数组的遍历
有三种,使用数组长度遍历,和使用
for each
循环,或者使用Java提供的工具类Arrays
的toString(数组名)
方法
public class Test {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8,9,10};
// for(int i = 0;i < arr.length;i++) {
// System.out.println(arr[i]);
// }
// System.out.println(Arrays.toString(arr));
for(int i : arr) {
System.out.println(i);//i,不是arr[i]
}
}
}
数组排序
有多种排序,例如下面冒泡排序:
public class Test {
public static void main(String[] args) {
int[] arr = {132,23,34,441,51432,6412,74,81,349,10};
for(int i = 1;i < arr.length;i++) {
for(int j = 0;j < arr.length-i;j++) {
if(arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
System.out.println("==========");
for(int i : arr) {
System.out.println(i);
}
}
}
或者使用Java提供的工具类Arrays
的sort(数组名)
方法(升序)
public class Test {
public static void main(String[] args) {
int[] arr = {132,23,34,441,51432,6412,74,81,349,10};
System.out.println(Arrays.toString(arr));
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
}
}
多维数组
除了一维数组外,还有多维数组,即将数组作为数组的元素进行嵌套。
定义
基本与一维数组一致
int arr[][] = new int[5][5];
int[][] arr = new int[][]{{1,2,3},{1,2,3}};
int arr[][] = {{1,2,3},{4,5,6},{7,8,9}};
上述为二维数组,三维数组3个[]
,以此类推。
访问与赋值
arr[0][0] = 1;
System.out.println(arr[0][0]);
获取数组长度
public class Test {
public static void main(String[] args) {
int[][] arr = new int[][]{{1,2,3},{1,2,3}};
System.out.println(arr.length);//2
System.out.println(arr[0].length);//3
}
}
遍历
可使用自己算法,或Java提供的多维数组打印
Arrays.deepToString()
方法
public class Test {
public static void main(String[] args) {
int[][] arr = new int[][]{{1,2,3},{1,2,3}};
for(int i = 0;i < arr.length;i++){
for(int j = 0;j < arr[i].length;j++){
System.out.println(arr[i][j]);
}
}
// System.out.println(Arrays.deepToString(arr));
}
}
留言