一、陣列概念
一、陣列定義
陣列就是指在計算機記憶體中開闢的連續儲存空間,用於存放程式執行中需要用到的一組相同型別資料的容器。
二.陣列的宣告 +陣列的長度
定義陣列時需要確定陣列的長度(元素的個數),確定後不能更改;
獲取陣列長度:陣列名.length
1. 格式1(預設初始值)
-
資料型別 [ ] 陣列名 = new 資料型別 [ 陣列的個數 ]
例:int [ ] money = new int [ 100 ];
陣列長度:money.length(100);
2.格式2(賦予初始值)
-
資料型別 [ ] 陣列名 = new 資料型別 [ ]
例:int [ ] money = new int [ ]{100,200,300,...n};
陣列長度:money.length(n);
3.格式3(格式2簡寫)
- 資料型別 [ ] 陣列名 =
例:int [ ] money = {100,200,300};
陣列長度:money.length(3);
三、陣列的訪問
例:
int [ ] money = new int [ 100 ]; //宣告一個包含100個元素的陣列
訪問第一個元素(陣列下標索引從0開始)
money[ 0 ] = 100;
訪問第二個元素
money [ 1 ] =200;
...
訪問第100個元素
money [ 99 ] = 1000;
訪問第101 個元素(陣列下越界異常,陣列越界,不會顯示編譯錯誤,而是執行時報錯)
money[ 100 ]= 1100;
四、陣列的遍歷
例:
int [] arr = new int [6];
for(index = 0;index < arr.index.length;index++){
System.out.println(arr[index])
}
五、陣列的特點
1.陣列長度一旦指定,就無法更改;
2.陣列一旦宣告型別後,陣列中只能存放同一型別的資料陣列;
3.陣列型別可以是任何資料型別,包括基本型別和引用型別;
陣列有索引:從零開始,到陣列.length-1結束。
六、陣列的缺點
1.陣列長度指定後,就不能更改;
2.刪除、新增元素效率低;
3.陣列中實際元素的數量沒辦法獲取,沒有提供對應的方法或屬性來獲取;
七、例項
/**
* @author yeye
* @desc 陣列訪問示例
* @date 2024
*/
public class ArrayVisitDemo {
public static void main(String[] args) {
int [] arr = new int [5];
arr [0] = 1;
arr [1] = 2;
arr [2] = 3;
arr [3] = 4;
arr [4] = 5;
// arr [5] = 6;//陣列越界,不會顯示編譯錯誤,而是執行時報錯
System.out.println("陣列的長度是:"+arr.length);
//陣列遍歷
for(int index = 0;index <arr.length;index++){
System.out.println(arr[index]);
}
System.out.println("陣列元素為:"+arr[0]+" "+arr[1]+" "+arr[2]+" "+arr[3]+" "+arr[4]);
}
}
二、一維陣列和二維陣列
一、一維陣列定義
陣列中每個元素都只帶一個下標,這樣的陣列稱為一維陣列。使用Java陣列前,應宣告陣列併為陣列分配儲存空間。
二、宣告一維陣列
1.型別識別符號 [ ] 陣列名 =null; 例:
int [ ] list = null; //宣告list為一維型別陣列
2.型別識別符號 陣列名 [ ] = null;例:
int list [ ] = null; //宣告list為一維型別陣列
三、初始化一維陣列
1.透過直接指定初值來初始化陣列,例:
int [ ] list = {1,2,3};
2.利用new關鍵字初始化
利用new 關鍵字初始化陣列,不僅能為陣列分配需要的儲存空間,還能按照Java的預設初始化原則為陣列元素賦值。
四、二維陣列
例:int money [ ] = new int [3] [12];
二維陣列的遍歷
int money [ ] = new int [3] [12];
for(int row = 0;row <3;++row){
for(int column = 0;column<13;++column){
money[row][column] =100;
}
}
三、陣列的演算法(氣泡排序法)
口訣 :
氣泡排序要知道;內外迴圈兩層套;外環陣列遍歷到;內環邊界計算好;左右元素判大小;臨時變數交換好。
//外層迴圈遍歷整個陣列(最後一個陣列不需要遍歷)
for(i = 0;i < (陣列長度-1);i++){
//記憶體迴圈控制元素交換即冒泡,一般為陣列長度-外層迴圈遍歷-1
for(j = 0;j <(陣列長度-i-1);j++){
//升序--如果前面大於後面則交換;降序--如果後面大於前面則交換
if(array[j] > array[j+1]){
//引進temp變數作為交換媒介
int temp = array[j+1]; //臨時變數
array[j+1] = array[j];
array[j] = temp;
}
}
}
例項:
package array;
/**
* @author yeye
* @desc 氣泡排序法
* @date 2024
*/
public class BubbleSortDemo {
public static void main(String[] args) {
// 定義陣列
int[] arr =new int [] {3,2,5,8,6,1,4,7};
//氣泡排序
for(int i = 0;i < arr.length;i++){
for(int j =0;j <arr.length-i-1;j++){
if(arr[j] > arr[j+1] ){
int temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
// 輸出排序後的陣列
for(int i = 0;i < arr.length;i++){
System.out.print(arr[i]);
}
}
}