什么是數(shù)組
所謂數(shù)組顾瞪,是在程序設(shè)計中,為了處理方便陈醒,把具有相同類型的若干變量按有序的形式組織起來的一種數(shù)據(jù)形式。
這些按一定順序排列的同類型數(shù)據(jù)的集合稱為數(shù)組钉跷。
而數(shù)組中的每一個數(shù)據(jù)稱之為數(shù)組元素,數(shù)組中的元素以索引來表示其存放的位置爷辙,索引從0開始吼虎,步長是1,有點像Excel表格的行號苍鲜,逐行遞增玷犹。
數(shù)組的定義
變量的定義:
數(shù)據(jù)類型 變量名; 如: int age;
數(shù)組的定義:
- 方式1: 數(shù)組元素的類型[] 數(shù)組名; int[] ages;
- 方式2:數(shù)組元素的類型 數(shù)組名[]; int ages[];
數(shù)組必須先初始化,才能使用,因為初始化表示在內(nèi)存中分配空間。
數(shù)組的初始化
Java中數(shù)組必先初始化后才能使用歹颓,所謂初始化就是給數(shù)組元素分配內(nèi)存,并為每個元素賦初始值领跛。
初始化數(shù)組的兩種方式:
- 靜態(tài)初始化;
- 動態(tài)初始化吠昭;
無論以哪種方式初始化數(shù)組,一旦初始化完成胧瓜,數(shù)組的長度就固定了,不能改變府喳,除非重新初始化。也就是說數(shù)組是定長的兜粘。
靜態(tài)初始化
特點:有我們自己來為每一個數(shù)組元素設(shè)置初始化值,而數(shù)組的長度由系統(tǒng)(JVM)決定弯蚜。
語法:數(shù)組元素類型[] 數(shù)組名 = new 數(shù)組元素類型[]{元素1,元素2,元素3,.......};
舉例:
int[] nums = new int[]{1,3,5,7,9};
// 簡單寫法,必須聲明之后,立刻初始化,不能先聲明后初始化:
int[] nums = {1,3,5,7,9};
動態(tài)初始化
特點:由我們來設(shè)置數(shù)組的元素個數(shù)(數(shù)組長度),而每一個數(shù)組元素的初始值有系統(tǒng)決定。
語法:數(shù)組元素類型[] 數(shù)組名 = new 數(shù)組元素類型[ length ];
比如:
int[] ages = new int[100];
int[] nums = new int[5]{1,3,5,7,9};
// 第二行寫法是錯誤的,不能同時使用靜態(tài)初始化和動態(tài)初始化.
數(shù)組的基本操作
- 獲取元素: 元素類型 變量 = 數(shù)組名[index];
- 設(shè)置元素: 數(shù)組名[index] = 值;
- 遍歷數(shù)組元素: 建議使用for循環(huán),事先知道循環(huán)的次數(shù).
- 數(shù)組長度: int len = 數(shù)組名.length; length是屬性,不是方法.
- 索引范圍: 從0開始,逐一遞增. [0,數(shù)組名.length-1]
多維數(shù)組
- 一維數(shù)組: 就是數(shù)組,數(shù)組中的每一個元素都是一個值.
- 二維數(shù)組: 數(shù)組中的數(shù)組,數(shù)組中的每一個元素都是一個數(shù)組.(可以表示二維空間(行/豎))
- 三維數(shù)組: 數(shù)組中的每一個元素都是一個二維數(shù)組.
定義:
int[][] = new int[][]{
{1,2,3},
{4,5}
{6}
};
數(shù)組的遍歷方法
普通循環(huán):
- while
String[] aves = new String[]{"白鷺", "丹頂鶴", "黃鸝", "鸚鵡", "烏鴉", "喜鵲", "布谷鳥", "百靈鳥", };
int index = 0;
System.out.println("我的花園里有很多鳥熟吏,包括:");
while (index < aves.length) {
System.out.println(aves[index++]);
}
- do while
String[] aves = new String[]{"白鷺", "丹頂鶴", "黃鸝", "鸚鵡", "烏鴉", "喜鵲", "布谷鳥", "百靈鳥", };
int index = 0;
System.out.println("我的花園里有很多鳥,包括:");
do{
System.out.println(aves[index++]);
}while(index < aves.length)
- for
String[] aves = new String[]{"白鷺", "丹頂鶴", "黃鸝", "鸚鵡", "烏鴉", "喜鵲", "布谷鳥", "百靈鳥", };
System.out.println("我的花園里有很多鳥悍引,包括:");
for(int i = 0;i < aves.length;i++){
System.out.println(aves[i]);
}
foreach循環(huán)
String[] aves = new String[]{"白鷺", "丹頂鶴", "黃鸝", "鸚鵡", "烏鴉", "喜鵲", "布谷鳥", "百靈鳥", };
System.out.println("我的花園里有很多鳥,包括:");
for(String ele:names){
System.out.println(ele);
}
增強(qiáng)for循環(huán),其實是一個語法糖(編譯器級別的新特性),但是在字節(jié)碼中/底層依然是for循環(huán)趣斤。那到底,咱們是使用for循環(huán)還是使用增強(qiáng)for循環(huán)?
- 若需要取出數(shù)組元素,則使用for-each更簡單。
- 但是若需要操作數(shù)組索引,就只能使用普通的循環(huán)浓领。