第六章、陣列
阿新 • • 發佈:2020-12-06
第六章、陣列
1. 陣列
1.1 基本概述
陣列分為: 一維陣列、二維陣列、多維陣列 陣列是相同資料型別的多個元素的容器。 這些元素按線性順序排列。所謂線性順序是指除第一個元素外,每一個元素都有唯一的前驅元素;除最後一個元素外,每一個元素都有唯一的後繼元素(“一個跟一個”)。 一維陣列本質就是一塊連續的記憶體空間,可以在不同的儲存單元記錄不同的資料內容。 陣列名稱:類似於變數的名稱,用於記錄連續記憶體空間中的首地址 陣列元素:主要指存放在陣列記憶體空間中的資料內容。 陣列長度:主要指陣列中元素的個數,通常使用 陣列名.length的方式來獲取 陣列下標:主要指陣列元素的編號,從0開始一直到陣列的長度-1.
1.2 陣列的宣告方式
語法格式 資料型別[] 陣列名稱 = new 資料型別[陣列長度]; 例如: int[] arr = new int[5];-表示宣告一個長度為5個元素的型別為int的一維陣列。 int num = 5; -表示宣告一個初始值為5的int型別的變數num。 int arr[] = new int[5]; - 不推薦使用這種方式去做 注意事項 1.當陣列下標越界時候會在執行階段產生:java.lang.ArrayIndexOutOfBoundsException: 5 陣列下標越界 2.只有在宣告陣列時[]中的數字代表陣列的長度,否則一律代表陣列元素的下標; 陣列的初始化 資料型別[] 陣列名稱 = {初始值1,初始值2,初始值3,....} 例如: int[] arr = {10,20,30,40,50}; int[] arr1 = new int[]{10,20,30,40,50}; int[] arr; arr = {1,5,8,10}; 陣列的複製 int[] arr = {1,3,5,7,9}; int[] arr1 = new int[10]; //System.arrayCopy(原陣列,原陣列要複製的起始位置,目標陣列,起始位置,複製長度);
1.3 陣列的練習
實現使用者輸出正整數中重複數字出現的次數並列印。
例如:
123456712345671
1.4 氣泡排序
原理:比較兩個相鄰的元素,將值大的元素交換至右端。 int[] arr = {5,8,2,10,9}; //2 5 8 9 10 第一趟排序: 第一次排序:5和8比較,5不大於8,不交換 5,8,2,10,9 第二次排序:8和2比較 ,8大於2,交換位置 5 2 8 10 9 第三次排序 8和10比較,8不大於10 ,不交換位置 5 2 8 10 9 第四次排序 10和9比較,10大於9,交換位置 5 2 8 9 10 第二趟 第一次排序: 5和2比較,5大於2,交換位置 2 5 8 9 10 第二趟總共進行了1次比較, 排序結果 2 5 8 9 10 氣泡排序優點: 每進行一躺排序,就會少比較一次因為每進行一躺排序都會找出一個較大的值。一定程式減少演算法量
2. 二維陣列
2.1 基本概念
一維陣列本質上就是一段連續的記憶體空間,用於存放多個型別相同的資料。
二維陣列本質就是由一維陣列組成的陣列,也就是說每個元素都是一個一位陣列。
2.2 宣告方式
語法格式
資料型別[][] 變數名 = new 資料型別[m][n];
m:表示這個二維陣列由多個個一位陣列
n:表示每一個一維陣列的元素個數
比如:
int[][] arr = new int[2][3]; - 表示宣告一個具有2行3列的二維陣列
思考:
arr代表什麼? arr[0]代表什麼? arr[0][0]代表什麼?
arr代表陣列的名稱,也就是用於記錄該陣列記憶體空間的首地址
arr[0] 代表二維陣列中的第一行,也就是一個一維陣列
arr[0][0] 代表二維陣列中下標為0行0列的元素,也就是第一個一個維陣列中的第一個元素。
arr.length 代表二維陣列的大小,也就是二維陣列的行數。
arr[0].length代表就是二維陣列中第一行的大小,也就是一維陣列的大小,也就是列數
二維陣列的初始化
資料型別[][] 陣列名稱 = {{初始值},{初始值2},{初始值3}};
例如:
int[][] arr = {{1,3,5,7},{2,4,6},{8,9,10,11,15}};