數(shù)組概述和特點
數(shù)組的定義:
數(shù)組是相同類型數(shù)據(jù)的有序集合。數(shù)組描述的是相同類型的若干個數(shù)據(jù),按照一定的先后次序排列組合而成。其中,每一個數(shù)據(jù)稱作一個元素,每個元素可以通過一個下標(biāo)來訪問它們。數(shù)組的三個基本特點:
1.長度是確定的。數(shù)組一旦被創(chuàng)建,它的大小就是不可以改變的。
2. 其元素必須是相同類型,不允許出現(xiàn)混合類型。
3. 數(shù)組類型可以是任何數(shù)據(jù)類型,包括基本類型和引用類型。
老鳥經(jīng)驗
數(shù)組變量屬引用類型,數(shù)組也可以看成是對象,數(shù)組中的每個元素相當(dāng)于該對象的成員變量。數(shù)組本身就是對象,Java中對象是在堆中的,因此數(shù)組無論保存原始類型還是其他對象類型,數(shù)組對象本身是在堆中的。
創(chuàng)建數(shù)組和初始化
數(shù)組聲明(一維數(shù)組的聲明方式有兩種)
type[]?? ? arr_name;?//(推薦使用這中方式)
type? ?arr_name[];?
注意事項
1.?聲明的時候并沒有實例化任何對象,只有在實例化數(shù)組對象時,JVM才分配空間,這時才與長度有關(guān)。
2.?聲明一個數(shù)組的時候并沒有數(shù)組被真正的創(chuàng)建。
3.?構(gòu)造一個數(shù)組,必須指定長度。
【示例1】創(chuàng)建基本類型一維數(shù)組
public?class?Test {
????public?static?void?main(String args[]) {
???????int[] s =?null; // 1處
?????? s =?new?int[10]; // 2處
???????for?(int?i = 0; i < 10; i++) {
?????????? s[i] = 2 * i + 1;
?????????? System.out.println(s[i]);
?????? } // 3處
??? }
}
?示例1?內(nèi)存分析圖
【示例2】創(chuàng)建引用類型一維數(shù)組
class?Man{
????private?int?age;
????private?int?id;
????public?Man(int?id,int?age) {
???????super();
???????this.age = age;
???????this.id = id;
??? }
}
public?class?AppMain {
????public?static?void?main(String[] args) {
?????? Man[] mans;??
?????? mans =?new?Man[10];? ? //1處
?????? Man m1 =?new?Man(1,11);
?????? Man m2 =?new?Man(2,22);? //2處
?????? mans[0]=m1;
?????? mans[1]=m2;? //3處
??? }
}
? ?示例2?內(nèi)存分析圖
初始化
一、靜態(tài)初始化
除了用new關(guān)鍵字來產(chǎn)生數(shù)組以外,還可以直接在定義數(shù)組的同時就為數(shù)組元素分配空間并賦值。
【示例3】靜態(tài)初始化數(shù)組
int[] a = {1,2,3};
Man[] mans = {
????new?Man(1,1),
????new?Man(2,2)
};
二、動態(tài)初始化
數(shù)組定義與為數(shù)組元素分配空間并賦值的操作分開進(jìn)行。
【示例4】動態(tài)初始化數(shù)組
int[] a =?new?int[2];
a[0]=1;
a[1]=2;
三、數(shù)組的默認(rèn)初始化
數(shù)組是引用類型,它的元素相當(dāng)于類的實例變量,因此數(shù)組一經(jīng)分配空間,其中的每個元素也被按照實例變量同樣的方式被隱式初始化。
【示例5】數(shù)組的默認(rèn)初始化
int a[] = new int[2];? //0,0
boolean [] b = new ? boolean[2];? //false,false
String[] s = new ? String[2];??? ?//null, null
「全棧Java筆記」是一部能幫大家從零到一成長為全棧Java工程師系列筆記。筆者江湖人稱 Mr. G,10年Java研發(fā)經(jīng)驗,曾在神州數(shù)碼、航天院某所研發(fā)中心從事軟件設(shè)計及研發(fā)工作,從小白逐漸做到工程師、高級工程師、架構(gòu)師。精通Java平臺軟件開發(fā),精通JAVAEE,熟悉各種流行開發(fā)框架。
筆記包含從淺入深的六大部分:
A-Java入門階段
B-數(shù)據(jù)庫從入門到精通
C-手刃移動前端和Web前端
D-J2EE從了解到實戰(zhàn)
E-Java高級框架精解
F-Linux和Hadoop?