第十九章 數組定義和訪問
作者:張子默
一、容器的概念
容器是能夠將多個數據存儲到一起的一種存儲結構,每個數據稱爲該容器的元素。
- **生活中的容器:**水杯、衣櫃、教室
二、數組的概念
數組就是一種存儲數據長度固定的容器,保證多個數據的數據類型要一致。
三、數組的定義
1、定義方式①
數組存儲的數據類型[] 數組名字 = new 數組存儲的數據類型[長度];
-
數組定義格式詳解
-
數組存儲的數據類型:創建的數組容器可以存儲什麼數據類型。
-
[]:表示數組。
-
數組名字:爲定義的數組起個變量名,滿足標識符規範,可以使用名字操作數組。
-
new:關鍵字,創建數組使用的關鍵字。
-
數組存儲的數據類型:創建的數組容器可以存儲什麼數據類型。
-
[長度]:數組的長度,表示數組容器中可以存儲多少個元素。
-
注意:數組有定長特性,長度一旦指定,不可更改。
- 和水杯道理相同,買了一個2升的水杯,總容量就是2升,不能多也不能少。
-
-
舉例:定義可以存儲3個整數的數組容器,代碼如下:
int[] arr = new int[3];
2、定義方式②
數據類型[] 數組名 = new 數據類型[]{元素1, 元素2, 元素3, ...};
-
舉例:定義存儲1, 2, 3, 4, 5整數的數組容器
int[] arr = new int[]{1, 2, 3, 4, 5};
3、定義方式③
數據類型[] 數組名 = {元素1, 元素2, 元素3, ...};
-
舉例:定義存儲1, 2, 3, 4, 5整數的數組容器
int[] arr = {1, 2, 3, 4, 5};
4、實例
/*
數組的概念:一種可以同時存放多個數據值的容器。
數組的特點:
1.數組是一種引用數據類型
2.數組當中的多個數據,類型必須統一
3.數組的長度在程序運行期間不可改變
數組的初始化:在內存當中創建一個數組,並且向其中賦予一些默認值。
兩種常見的初始化方式:
1.動態初始化(指定長度)
2.靜態初始化(指定內容)
動態初始化數組的格式:
數據類型[] 數組名稱 = new 數據類型[數組長度];
解析含義:
左側數據類型:也就是數組當中保存的數據,全都是統一的什麼類型
左側的中括號:代表一個數組
左側的數組名稱:給數組取一個名字
右側的new:代表創建數組的動作
右側數據類型:必須和左邊的數據類型保持一致
右側中括號的長度:也就是數組當中。到底可以保存多少個數據,是一個int數字
*/
public class Demo01Array {
public static void main(String[] args) {
/*int score1 = 100;
int score2 = 98;
int score3 = 99;
System.out.println(score3); //99
score3 = 100;
System.out.println(score3); //100*/
//創建一個數組,裏面可以存放300個int數據
//格式:數據類型[] 數組名稱 = new 數據類型[數組長度];
int[] arrayA = new int[300];
//創建一個數組,能存放10個double類型的數據
double[] arrayB = new double[10];
//創建一個數組,能存放5個字符串
String[] arrayC = new String[5];
}
}
/*
動態初始化:在創建數組的時候,直接指定數組當中數據元素的個數
靜態初始化:在創建數組的時候,不直接指定數據個數多少,而是直接將具體的數據內容進行指定
靜態初始化基本格式:
數據類型[] 數組名稱 = new 數據類型[]{元素1, 元素2, ...};
注意事項:雖然靜態初始化沒有直接告訴長度,但是根據大括號裏面的元素具體內容也可以自動推算出來長度
*/
public class Demo02Array {
public static void main(String[] args) {
//直接創建一個數組,裏面裝的全都是int數字,具體爲:5、15、25
int[] arrayA = new int[] {5, 15, 25, 40};
//創建一個數組,用來裝字符串:"Hello"、"World"、"Java"
String[] arrayB = new String[] {"Hello", "World", "Java"};
}
}
/*
使用靜態初始化數組的時候,格式還可以省略一下。
標準格式
數據類型[] 數組名稱 = new 數據類型[]{元素1, 元素2, ...};
省略格式:
數據類型[] 數組名稱 = {元素1, 元素2, ...};
注意事項:
1.靜態初始化沒有直接指定長度,但是仍然會自動推算得到長度
2.靜態初始化標準格式可以拆分成爲兩個步驟
3.動態初始化也可以拆分成爲兩個步驟
4.靜態初始化一旦使用省略格式,就不能拆分成爲兩個步驟了
使用建議:如果不確定數組當中的具體內容,使用動態初始化;否則,已經確定了具體內容,用靜態初始化。
*/
public class Demo03Array {
public static void main(String[] args) {
//省略格式的靜態初始化
int[] arrayA = {10, 20, 30};
//靜態初始化的標準格式,可以拆分爲兩個步驟
int[] arrayB;
arrayB = new int[] {11, 21, 31};
//動態初始化也可以拆分爲兩個步驟
int[] arrayC;
arrayC = new int[5];
//靜態初始化的省略格式,不能拆分成爲兩個步驟
/*int[] arrayD;
arrayD = {10, 20, 30};*/
}
}
四、數組的訪問
1、索引
每一個存儲到數組的元素都會自動地擁有一個編號,從0開始,這個自動編號稱爲數組索引(index),可以通過數組的索引訪問數組中的元素。
2、數組訪問格式
數組名[索引]
3、數組長度屬性
每個數組都具有長度,而且是固定的。Java中賦予了數組的一個屬性,可以獲取得到數組的長度,語句爲:
數組名.length
,屬性length的執行結果是數組的長度,int類型結果。由此可以推斷出,數組的最大索引值爲數組名.length-1
。
4、索引訪問數組中的元素
-
數組名[索引] = 數值,爲數組中的元素賦值
-
變量 = 數組名[索引],獲取出數組中的元素
5、實例
/*
直接打印數組名稱,得到的是數組對應的內存地址哈希值。
訪問數組元素的格式:數組名稱[索引值]
索引值:就是一個int數字,代表數組當中元素的編號。
【注意】索引值從0開始,一直到"數組長度-1"爲止。
*/
public class Demo04ArrayUse {
public static void main(String[] args) {
//靜態初始化的省略格式
int[] array = {10, 20, 30};
System.out.println(array); // [I@185d8b6
//打印輸出數組的長度
System.out.println(array.length);
//直接打印數組當中的元素
System.out.println(array[0]); // 10
System.out.println(array[1]); // 20
System.out.println(array[2]); // 30
//爲數組元素賦值
array[2] = 100;
System.out.println(array[2]);
//也可以將數組當中的某一個單個元素賦值交給變量
int num = array[1];
System.out.println(num); // 20
}
}