Java學習-數組

一、基礎

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]);
  }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章