1. 什麼是數組?
數組是存儲同一種數據類型多個元素的集合。也可以看成是一個容器。
數組既可以存儲基本數據類型,也可以存儲引用數據類型。
2. 數組的定義與使用
public static void main(String[] args){
/*
數組的定義
1. int[] arr;
2. int arr[];
*/
// int arr[];
// System.out.println(arr[0]);
/*
但是僅僅定義好的數組裏面是沒有元素值的
如上面兩行代碼,編譯時會報錯
錯誤: 可能尚未初始化變量arr
所以數組使用前需要初始化,
就是爲數組中的數組元素分配內存空間,併爲每個數組元素賦值。
初始化有兩種方式:
|-- 靜態初始化:給出初始化值,由系統決定長度
數據類型[] 數組名 = new 數據類型[]{元素 1,元素 2,…};
|-- 動態初始化:只指定長度,由系統給出初始化值
數據類型[] 數組名 = new 數據類型[數組長度];
注意事項:
不要同時動態和靜態進行。
如下格式:
int[] arr = new int[3]{1,2,3}; //錯誤
*/
// 靜態初始化
int[] staticArr = new int[]{1,2,3};
System.out.println(staticArr[0]); // 1
//動態初始化, 整形數組默認值爲 0
int[] DynamicArr = new int[3];
System.out.println(DynamicArr[0]);// 0
}
3. 數組常見操作
1. 數組遍歷(依次輸出數組中的每一個元素)
2. 數組獲取最值(獲取數組中的最大值最小值)
3. 數組元素逆序 (就是把元素對調)
4. 數組查表法(根據鍵盤錄入索引,查找對應星期)
5. 數組元素查找(查找指定元素第一次在數組中出現的索引)
4. 二維數組
public static void main(String[] args){
/*
二維數組的定義
格式一:
1. 數據類型[][] 變量名 = new 數據類型[m][n];
數據類型[] 數組名[] = new 數據類型[m][n];
|-- m 表示這個二維數組有多少個一維數組
|-- n 表示每個一維數組的元素個元素
2. int arr[];
*/
// 定義一個二維數組
int[][] arr1 = new int[3][2];
//輸出二維數組的元素
System.out.println(arr1[0][0]); // 0
/*
格式二:
數據類型[][] 變量名 = new 數據類型[m][];
m 表示這個二維數組有多少個一維數組
這一次沒有直接給出一維數組的元素個數,可以動態的給出。
*/
//定義數組
int[][] arr2 = new int[3][];
arr2[0] = new int[2];
arr2[1] = new int[3];
arr2[2] = new int[1];
System.out.println(arr2[0][0]); // 0
/*
格式三:
數據類型[][] 變量名 = new 數據類型[][]{{元素…},{元素…},{元素…}};
簡化版格式:
數據類型[][] 變量名 = {{元素…},{元素…},{元素…}};
*/
int[][] arr3 = {{1,2,3},{4,5},{6}};
System.out.println(arr3[0][0]); // 1
}
5. 練習:打印楊輝三角
/*
需求:打印楊輝三角形(行數可以鍵盤錄入)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
分析:看這種圖像的規律
A:任何一行的第一列和最後一列都是1
B:從第三行開始,每一個數據是它上一行的前一列和它上一行的本列之和。
步驟:
A:首先定義一個二維數組。行數如果是n,我們把列數也先定義爲n。
這個n的數據來自於鍵盤錄入。
B:給這個二維數組任何一行的第一列和最後一列賦值爲1
C:按照規律給其他元素賦值
從第三行開始,每一個數據是它上一行的前一列和它上一行的本列之和。
D:遍歷這個二維數組。 */ import java.util.Scanner;
class PrintPic{
public static void main(String[] args){
//創建鍵盤錄入對象
Scanner sc = new Scanner(System.in);
//這個n的數據來自於鍵盤錄入。
System.out.println("請輸入一個數據:");
int n = sc.nextInt();
//定義二維數組
int[][] arr = new int[n][n];
//給這個二維數組任何一行的第一列和最後一列賦值爲1
for(int i=0; i<arr.length; i++){
arr[i][0] = 1; //任何一行第1列
arr[i][i] = 1; //任何一行的最後1列
}
//按照規律給其他元素賦值
//從第三行開始,每一個數據是它上一行的前一列和它上一行的本列之和。
for(int i=2; i<arr.length; i++){
//這裏如果y<=x是有個小問題的,就是最後一列的問題
//所以這裏要減去1
//並且y也應該從1開始,因爲第一列也是有值了
for(int j=1; j<=i-1; j++) {
//每一個數據是它上一行的前一列和它上一行的本列之和。
arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
}
}
//遍歷這個二維數組。
//這個時候,要注意內循環的變化
for(int i=0; i<arr.length; i++){
for(int j=0; j<=i; j++){
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}
}