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

來源:互聯網
上載者:User

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

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

生活案例:博物架每一個物品架都是相同類型的物品,長度不變,即使把物品下架,物品架依然不會改變。 定義數組

使用數組4步走:

1、聲明數組Java中支援兩種格式的數組定義格式:
類型[] 變數名;類型 變數名[];

 例:

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

 

聲明數組也就相當於上面例子中購買了一個定製的物品架(數組)到博物館中,但是還沒有確定物品架的大小(數組的大小),也還沒有往物品架上放東西(數組元素)。

2、分配空間 分配空間也就是對數組進行初始化,初始化分為兩種方式:第一種:靜態初始化靜態初始化的文法格式如下:
資料類型[] 變數名 = new 資料類型[]{資料1, 資料2,資料3,......};

 例:

int[] a = new int[]{4,2,64,12,3};  //將這些數存放在數組中,數組的大小(長度)為花括弧中元素的數量,該例子中大小為5String[] 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;
3、賦值 儘管你已經初始化好了數組,但是我們還是可以通過通過賦值的方式改變裡面的資料。那麼已經初始化好了數組,確定了數組的大小,我們該如何為沒一個數組元素賦值呢?數組中還有一個下標的概念,數組初始化的時候,會為每個元素分配一個下標,就和物品展示架上的編號一樣,我們可以通過下標為每個元素重新賦值。數組的下標從0開始,也就是說,第一個元素的下標為0,至於為什麼要從0開始,我們後面再探討一下,我們先看看賦值的例子:
int[]  a = new int[3];  //定義一個長度為3的int類型數組,裡面3個元素值已預設為0;a[0] = 4;  //設定第一個元素值為4a[1] = 5;  //設定第二個元素值為5a[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。

4、處理資料

在前面的內容中,我們已經定義了數組,初始化了數組,賦了值,那麼如何使用資料呢,其實前面已經分析過,我們通過數組下標來為數組賦值,也通過數組下標得到每個數組元素的值。

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數組不存在這個位置,則會出現異常。

 

 

二維數組或多維陣列

上面我們講的都是在數組中儲存一種基礎資料型別 (Elementary Data Type)或引用資料類型,而我們也可以在數組中儲存數組:

                          

上面我們在一個數組元素中儲存了另外一個數組元素,裡面那個數組儲存了一種資料類型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多維陣列,不過一般人使用的不多  ~~~^_^~~~

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.