[Java入門筆記] Java語言基礎(五):數組

簡介

數組可用用於存儲存儲多個數據,Java的數組要求全部的數組元素具備一種相同的數據類型。一旦數組初始化完成,數組在內存中的空間被固定下來,長度不可改變,即便把數組的元素清空,所佔用的空間依然被保留。數組

生活案例:博物架spa

每個物品架都是相同類型的物品,長度不變,即便把物品下架,物品架依然不會改變。內存

 

定義數組

使用數組4步走:變量

一、聲明數組

Java中支持兩種格式的數組定義格式:循環

類型[] 變量名;
類型 變量名[];

 例:遍歷

int[] a;
int b[];  //兩種方法都行,不過建議使用第一種。

 

聲明數組也就至關於上面例子中購買了一個定製的物品架(數組)到博物館中,可是尚未肯定物品架的大小(數組的大小),也尚未往物品架上放東西(數組元素)。數據類型

二、分配空間

 分配空間也就是對數組進行初始化,初始化分爲兩種方式:語法

第一種:靜態初始化

靜態初始化的語法格式以下:引用

數據類型[] 變量名 = new 數據類型[]{數據1, 數據2,數據3,......};

 例:float

int[] a = new int[]{4,2,64,12,3};  //將這些數存放在數組中,數組的大小(長度)爲花括號中元素的數量,該例子中大小爲5
String[] b = new String[]{"張三", "李四", "王五"};  //全部數據的類型必須爲定義的數據類型
int[] c = {2,5,7};  //也可使用這樣的簡寫方式

 

這就如同購買一個定製的物品架回來,同時將展現品放到物品架中一塊兒購買回來,而物品架的大小就有多少物品就就有多大。

第二種:動態初始化

動態初始化是隻指定數組的大小,由系統爲每一個元素指定初始值得一種方式。語法格式以下:

數據類型[] 變量名 = new 數據類型[大小];

 

在這個格式中, 須要爲其指定一個整數類型的數組大小,指定後,將肯定數據的長度,數組可以存放多少元素。同時爲全部元素指定一個默認初始值。

例:

int[]  a = new int[5];  //定義一個數組,長度爲5,也就是說,可以存放5個int類型的數據,同時,默認5個值初始化爲0

 

初始化時默認值按如下規定設置:

  • byte,short,int、long默認爲0;
  • float、double默認爲0.0;
  • char默認爲'\u0000';
  • boolean默認爲false;
  • 其餘引用類型默認爲null;

三、賦值

 儘管你已經初始化好了數組,可是咱們仍是能夠經過經過賦值的方式改變裏面的數據。那麼已經初始化好了數組,肯定了數組的大小,咱們該如何爲沒一個數組元素賦值呢?

數組中還有一個下標的概念,數組初始化的時候,會爲每一個元素分配一個下標,就和物品展現架上的編號同樣,咱們能夠經過下標爲每一個元素從新賦值。

數組的下標從0開始,也就是說,第一個元素的下標爲0,至於爲何要從0開始,咱們後面再探討一下,咱們先看看賦值的例子:

int[]  a = new int[3];  //定義一個長度爲3的int類型數組,裏面3個元素值已默認爲0;
a[0] = 4;  //設置第一個元素值爲4
a[1] = 5;  //設置第二個元素值爲5
a[2] = 7;  //設置第三個元素值爲7

 

爲何數組下標從0開始?

首先咱們須要知道的是,程序是在電腦內存中運行的,當咱們的程序開始處理數據時,會在內存中開闢一個小小的空間用來存儲數據,在代碼中也就是定義一個變量,如:

int a = 5;

 

定義一個int類型變量,值爲五,而在內存中表示爲,在內存中分配一小塊內存,命名爲a,裏面存的值爲5。

而咱們是如經過a這樣一個變量名獲得內存中的值得呢?是由於每一小塊內存都會有一個地址,就如同咱們居住的家有一個地址同樣,經過這個地址,經過這個地址,就能知道里面住的是誰。

二數組在內存中是以相連的位置存儲的,方便對數組的操做,咱們看一個例子:

int[] b = new int[3];  //定義一個int類型的數組,長度爲3,裏面的元素默認值爲0

 

 此時內存中是這樣的:

數組中得到數據也是如此,如何知道b數組每一個元素的數據呢?首先咱們知道經過b這個數組在內存中的哪一個位置,由於數組在內存中是一個相連的內存空間,因此b[0]的位置就等於b+0,而b[1]的位置就爲b+1,b[2]=b+2,......以此類推,知道了數組全部元素的位置。而數組中第一個元素正好是在數組中開頭的位置,用b[0]表示,則恰好是b表示的位置,而用1表示第一個元素的位置,則須要表示爲a+1-1。

四、處理數據

在前面的內容中,咱們已經定義了數組,初始化了數組,賦了值,那麼如何使用數據呢,其實前面已經分析過,咱們經過數組下標來爲數組賦值,也經過數組下標獲得每一個數組元素的值。

複製代碼

int[] a = new int[3];
a[0] = 3;
a[1] = 4;
a[2] = 5;
System.out.println(a[1]);  //獲得數組的第二個位置的值,將它輸出

//咱們也能夠經過循環遍歷數組中每一個元素
for(int i = 0; i < a.length; i++){
    System.out.println(a[i]);  //循環打印出數組中每一個元素
}

複製代碼

 

在上面的例子中,循環打印的時候,咱們看到,使用了a.length,經過 數組變量名.length 能夠獲得數組的長度,因此上面咱們經過a.length獲得數組的長度爲3,循環3次,打印出數組的元素。

不該該訪問不存在的下標

上面咱們知道,咱們控制數組是經過 變量名[下標] 來爲變量賦值或者獲得值,而若是訪問超過了數組長度的下標時,則會出現異常。

int[] a = new int[2];
a[5] = 2;  //a數組長度只有2個長度,而咱們經過下標5訪問第6個元素,實際a數組不存在這個位置,則會出現異常。

 

 

二維數組或多維數組

上面咱們講的都是在數組中存儲一種基本數據類型或引用數據類型,而咱們也能夠在數組中存儲數組:

                          

上面咱們在一個數組元素中存儲了另一個數組元素,裏面那個數組存儲了一種數據類型int的值,咱們稱這樣的數組爲二維數組。

二維數組的定義,初始化和賦值

數據類型[ ] [ ]  數組名 = new 數據類型[長度1][長度2] ;

 

長度1爲外面一層數組的長度,長度2位裏面一層的長度。

定義和初始化上圖中的形式,咱們能夠這樣:

複製代碼

int[][] a = new int[3][3];
a[0][0] = 2;  //訪問時前面一個方括號的數字表示外面一層數組的元素下標,第二個方括號的數字表示裏面一層的數組的下標
a[0][1] = 3;
a[0][2] = 4;
a[1][0] = 5;
a[1][1] = 3;
a[1][2] = 9;
a[2][0] = 90;
a[2][1] = 70;
a[2][2] = 85;

複製代碼

 

 

 

咱們也能夠將二維數組定義成這樣一種格式:

                             

複製代碼

int[][] a = new int[3][];  //在定義初始化時設置外面一層長度爲3,不設置裏面一層的長度,

a[0] = new int[2];  //初始化裏面每一層,設置長度
a[1] = new int[1];
a[2] = new int[3];

a[0][0] = 3;  //爲每個元素賦值
a[0][1] = 4;
a[1][0] = 9;
a[2][0] = 90;
a[2][1] = 70;
a[2][2] = 85;

複製代碼

 

 

而三維數組就是數組裏面的數組裏面存放的是數組~~~~~以此類推能夠有n多維數組,不過通常人使用的很少  ~~~^_^~~~

相關文章
相關標籤/搜索