21_數組的常用操作

第二十一章 數組的常用操作

作者:張子默

一、數組越界異常

public static void main(String[] args) {
	int[] arr = {1,2,3};
	System.out.println(arr[3]);
}

創建數組,賦值3個元素,數組的索引就是0,1,2,沒有3索引,因此我們不能訪問數組中不存在的索引,程序運行後,將會拋出ArrayIndexOutOfBoundsException數組越界異常。在開發中,數組越界異常是不能出現的,一旦出現了,就必須要修改我們編寫的代碼。

在這裏插入圖片描述

1、實例

	/*
	數組的索引編號從0開始,一直到"數組的長度-1"爲止。
	
	如果訪問數組元素的時候,索引編號並不存在,那麼將會發生數組索引越界異常:ArrayIndexOutOfBoundsException
	
	原因:索引編號寫錯了
	*/
	public class Demo08ArrayIndex {
		public static void main(String[] args) {
			int[] array = {15, 25, 35};
			
			System.out.println(array[0]); // 15
			System.out.println(array[1]); // 25
			System.out.println(array[2]); // 35
			
			System.out.println(array[3]);
		}
	
	}

二、數組空指針異常

public static void main(String[] args) {
	int[] arr = {1,2,3};
	arr = null;
	System.out.println(arr[0]);

arr = null這行代碼,意味着變量arr將不會再保存數組的內存地址,也就不允許再操作數組了,因此運行的時候會拋出NullPointerException空指針異常。在開發中,數組的空指針異常是不能出現的,一旦出現了,就必須要修改我們編寫的代碼。

在這裏插入圖片描述

在這裏插入圖片描述

三、獲取數組的長度

/*
如何獲取數組的長度,格式:數組名稱.length
	
這將會得到一個int數字,代表數組的長度

數組一旦創建,程序運行期間,長度不可改變
*/
public class Demo03ArrayLength {
	public static void main(String[] args) {
		int[] arrayA = new int[3];
		
		int[] arrayB = {10, 20, 30, 3, 5, 4, 6, 7, 8, 8, 65, 4, 44, 6, 10};
		int len = arrayB.length;
		System.out.println("arrayB數組的長度是:" + len);
		System.out.println("==================");
		
		int[] arrayC = new int[3];
		System.out.println(arrayC.length); // 3
		arrayC = new int[5];
		System.out.println(arrayC.length);
	}

}

四、數組遍歷

  • **數組遍歷:**就是將數組中的每個元素分別獲取出來,就是遍歷。遍歷也是數組操作中的基石。

    	public static void main(String[] args) {
    		int[] arr = { 1, 2, 3, 4, 5 };
    		System.out.println(arr[0]);
    		System.out.println(arr[1]);
    		System.out.println(arr[2]);
    		System.out.println(arr[3]);
    		System.out.println(arr[4]);
    	}
    

以上代碼是可以將數組中每個元素全部遍歷出來,但是如果數組元素非常多,這種寫法肯定不行,因此我們需要改造成循環的寫法。數組的索引是0length-1,可以作爲循環條件出現。

	public static void main(String[] args) {
		int[] arr = { 1, 2, 3, 4, 5 };
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
	}

五、數組獲取最大值元素

  • **最大值獲取:**從數組的所有元素中找出最大值。

  • 實現思路:

    • 定義變量,保存數組0索引上的元素
    • 遍歷數組,獲取出數組中的每個元素
    • 將遍歷到的元素和保存數組0索引上值的變量進行比較
    • 如果數組元素的值大於了變量的值,變量記錄住新的值
    • 數組循環遍歷結束,變量保存的就是數組中的最大值

在這裏插入圖片描述

	public static void main(String[] args) {
		int[] arr = { 5, 15, 2000, 10000, 100, 4000 };
		//定義變量,保存數組中0索引的元素
		int max = arr[0];
		//遍歷數組,取出每個元素
		for (int i = 0; i < arr.length; i++) {
			//遍歷到的元素和變量max比較
			//如果數組元素大於max
			if (arr[i] > max) {
				//max記錄住大值
				max = arr[i];
			}
		}
		System.out.println("數組最大值是: " + max);
	}

1、實例

	public class Demo11ArrayMax {
		public static void main(String[] args) {
			int[] array = {5, 15, 30, 20, 10000, 35};
			
			int max = array[0]; //比武擂臺
			for (int i=1; i<array.length; i++) {
				//如果當前元素比max更大,則換人
				if(array[i]>max) {
					max = array[i];
				}
			}
			//誰最後最厲害,就能在max當中留下誰的戰鬥力
			System.out.println("最大值:" + max);
		}
	
	}

	public class Demo12ArrayMin {
		public static void main(String[] args) {
			int[] array = {5, 15, 30, 20, 10000, 35};
			
			int min = array[0];
			for (int i=1; i<array.length; i++) {
				//如果當前元素比min更小,則換人
				if(array[i]<min) {
					min = array[i];
				}
			}
			System.out.println("最小值:" + min);
			
		}
	
	}

六、數組反轉

  • **數組的反轉:**數組中的元素顛倒,例如原始數組爲1,2,3,4,5,反轉後的數組爲5,4,3,2,1

  • **實現思想:**數組最遠端的元素互換位置

    • 實現反轉,就需要將數組最遠端元素位置交換
    • 定義兩個變量,保存數組的最小索引和最大索引
    • 兩個索引上的元素交換位置
    • 最小索引++,最大索引–,再次交換位置
    • 最小索引超過了最大索引,數組反轉操作結束

在這裏插入圖片描述

1、實例

	/*
	數組元素的反轉
		本來的樣子:[1, 2, 3, 4]
		之後的樣子:[4, 3, 2, 1]
		
	要求:不能使用新數組,就永遠來的唯一一個數組
	*/
	public class Demo13ArrayReverse {
		public static void main(String[] args) {
			int[] array = {10, 20, 30, 40, 50};
			
			//遍歷打印數組本來的樣子
			for (int i=0; i<array.length; i++) {
				System.out.println(array[i]);
			}
			System.out.println("==========");
			
			/*
			初始化語句:int min = 0, max = array.length - 1
			條件判斷:min < max
			步進表達式:min++, max--
			循環體: 用第三個變量倒手
			*/
			for (int min=0, max=array.length-1; min<max; min++, max--) {
				int temp = array[min];
				array[min] = array[max];
				array[max] = temp;
			}
			
			//再次打印遍歷輸出數組後來的樣子
			for (int i=0; i<array.length; i++) {
				System.out.println(array[i]);
			}
		}
	
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章