文章目錄
一、基礎
1.1 基礎
項目 | 含義 |
---|---|
含義 | 數組是一個固定長度的,包含了相同類型數據的 容器 |
作用 | 臨時存儲數據 |
特點 | 長度固定 |
下標基 | 下標0,代表數組裏的第一個數 |
長度 | int arr1Length = arr1.length; |
默認值 | 根據數據類型的默認值。 |
1.2 引用概念
含義:若一個變量代表一個對象,則把這個變量叫做這個對象的引用。
// ==============引用類型==============
int[] a = new int[5];
// a叫做new int[5]實例對象的引用。
// 即,讓a這個引用,指向數組(new int[5])實例對象。
People p = new Student();
// 含義:父類(People)的引用(p)指向子類(Student)。
// ==============基本類型==============
int c = 5;
// 含義:給c賦值爲5 。
二、創建數組
創建方式:聲明、分配空間(長度)、賦值組合。
聲明:僅僅是聲明,不會創建數組
int[] arr1;
分配空間:指定數組的長度。也叫創建數組
arr1 = new int[5];
賦值:給數組元素賦值。
// 全賦值
arr1 = {1,2,3};
// 注意:此時,是讓引用變量arr1,指向數組new int[5]。
// 一個一個賦值。
arr1[0] = 1;
2.1 未指明數組長度
不常用。
// 方式一;聲明並賦值。
// 語法 :數據類型[] 數組名 = {元素1,元素2,....};
public int[] getArray(int arrayLength){
int[] arr1 = {1,2,3};
int[] arr2 = new int[]{1,2,3};
return arr1;
}
// 方式二:先聲明,再賦值。
int[] arr1;
arr1 = {1,2,3};
2.2 指明數組長度
常用。
int[] arr1 = new int[5];
// 此時,系統自動賦值,數字型全部元素爲0,字符串型全部爲null。
// Java中的數組再規定了長度之後,不可再增加。
arr1 = {1,2,3,4,5}; // 直接賦全值
arr1[0] = 0; // 一個一個賦值(或修改元素)。
三、數組元素CRUD
3.1 遍歷
// ===============for循環===============
int[] arr3 = {1,2,3,4}
for(int i = 0; i < arr3.length; i++){
System.out.println(arr3[i]); // 結果:1 2 3 4
arr3[i] = 2;// 循環體內可以改變數組元素。
}
System.out.println(Arrays.toString(arr3));
// 結果:[1,2,3,4]
// ===============foreach循環===============
int[] arr4 = {1,2,3,4};
for(int e : arr4){
System.out.println(e); // 結果:1 2 3 4
e = 2; // 循環體內不可改變數組元素。
}
System.out.println(Arrays.toString(arr4));// 結果:[1,2,3,4]。
// ===============打印數組===============
// 語法:Arrays.toString(數組名);
// 注意:該語法會把數組轉化爲字符串,但保留了“[”、“,”和“]”。
int[] ar5 = {1,2,3,4};
String str = Arrays.toString(arr5);
System.out.println(str);
// 結果:[1,2,3,4]
System.out.println(str.charAt(0));
// 結果:[
3.2 增加與複製
由於數組的長度是固定的,因此不能直接增加元素,只能改變引用的指向。
複製數組方式一:
System.arraycopy(src, srcPos, dest, destPos, length);
//src: 源數組
//srcPos: 從源數組複製數據的起始位置
//dest: 目標數組
//destPos: 複製到目標數組的起始位置
//length: 複製的長度
複製數組方式二:
int[] dest = Arrays.copyOfRange(src, srcPos, srcEnd);
//dest: 目標數組
//src: 源數組
//srcPos: 從源數組複製數據的起始位置(取得到)
//srcEnd: 從源數組複製數據的結束位置(取不到)
複製數組方式三:
int[] dest = new int[src.length];
for(int i = srcPos; i < length;i++){
dest[i] = src[i];
}
增加數組元素。
int[] a = {1,2,3};
int[] b = {4,5};
a = add(a,b);
// 把兩個數組合並。
public static int[] add(int[] a, int[] b){
int aLength = a.length;
int bLength = b.length;
int[] c = new int[aLength+bLength];
System.arraycopy(a, 0, c, 0, aLength);
System.arraycopy(b, 0, c, aLength, bLength);
return c;
}
3.3 修改
// 直接通過索引修改。
arr1[2] = 3;
// 填充數組
Arrays.fill(src,start,end,fillValue);
3.4 刪除
由於數組的長度是固定的,因此不能直接增加元素,只能改變引用的指向。
int[] a = {1,2,3};
int index = 1;
a = add(a,index);
// 把兩個數組合並。
public static int[] remove(int[] a,int index){
int aLength = a.length;
int[] c = new int[aLength - 1];
if( index == 0){
System.arraycopy(a, 1, c, 0, c.length);
}else if(index == aLength){
System.arraycopy(a, 0, c, 0, c.length);
}else{
System.arraycopy(a, 0, c, 0, index);
System.arraycopy(a, index + 1, c, index, aLength -(index + 1));
}
return c;
}
四、數組元素比較
4.1 數組與數組
語法:Arrays.equals(數組1,數組2)
int[] arr3 = {1,2,3,4};
int[] arr4 = {1,2,3,5};
boolean isEquals = Arrays.equals(arr3, arr4);
System.out.println(isEquals); // 結果:false。
4.2 元素與數組
boolean isEquals = (arr[i] == target) ? true:false;
int index = Arrays.binarySearch(arr, 62)
五、數組元素排序
5.1 從小到大
語法:Arrays.sort(數組名)
int[] arr3 = {1,3,2,4};
Arrays.sort(arr3);
System.out.println( Arrays.toString(arr3));
// 結果:[1,2,3,4]
5.2 從大到小
int[] arr3 = {1,3,2,4};
Arrays.sort(arr3);
System.out.println( Arrays.toString(arr3));
for(int i = 0; i < arr3.length/2; i++){
int temp = arr[i];
arr[i] = arr[(arr3.length - 1) - i];
arr[(arr3.length - 1) - i] = temp;
}
六、數組轉換
6.1 數組與字符串
// 數組轉字符串
String arrStr = Arrays.toString(arr);
// 字符串轉數組
String str = "abc,eda,efa,gce";
String[] arr1 = str.split(",");
System.out.println(Arrays.toString(arr1));
// [abc, eda, efa, gce]
char[] arr2 = str.toCharArray();
System.out.println(Arrays.toString(arr2));
// [a, b, c, ,, e, d, a, ,, e, f, a, ,, g, c, e]
6.2 數組與集合
// 數組轉集合
String[] arr = new String[]{"haha", "xixi", "heihei"};
List<String> list = Arrays.asList(arr);
// 集合轉數組
List<Integer> list = new ArrayList<Integer>();
Integer[] arr = new Integer[list.size()];
list.toArray(arr);
七、二維數組
本質:把一維數組的元素類型,變成了一維數組。
7.1 創建
// 方式一:不顯示指明分配空間。
int arr1[][] = {{1,2,3},{4,5,6},{7,8,9}};
// 方式二:顯示指明分配空間。數據類型 數組名[][] = new int[行數][列數];
int arr3[][] = new int[2][];
arr3[0] = new int[2];
arr3[1] = new int[3];
arr3[0][0] = 0;
7.2 遍歷
int arr1[][] = {{1,2,3},{4,5,6},{7,8,9}};
for(int i = 0; i < arr1.length; i++){
for(int j = 0; j < arr1[i].length; j++){
System.out.println(arr1[i][j]);
}
}