4.2 java數(shù)組

一、學習要求

書籍參考章節(jié): 第3.10章節(jié)

學習目標:

  • 掌握數(shù)組的基本概念
  • 數(shù)組的定義和初始化
  • 數(shù)組的操作

二、參考知識

數(shù)組是用來存儲一組相同類型的數(shù)據(jù)??梢詣?chuàng)建任意類型的數(shù)組。并且數(shù)組可以是一維或多維的。另外需要注意的是,數(shù)組不是簡單類型,它是對象類型。下面來詳細介紹。

基本概念

我們先看一個簡單例子:

public class Demo {
    public static void main(String[] args) {
        //聲明了一個 整型數(shù)組,并創(chuàng)建數(shù)組對象,指定長度為10
        int[] a = new int[10];
        for(int i=0;i<10;i++){
            //設置數(shù)組元素的值
            a[i] = i*2;
        }
        for(int j=0;j<10;j++){
            //獲取數(shù)組元素的值
            int value = a[j];
            System.out.println(value);
        }
    }
}

上面簡單例子包含了數(shù)組變量的聲明、數(shù)組對象的創(chuàng)建、數(shù)組元素的訪問。下面我們一一來詳細描述。

數(shù)組變量的聲明

數(shù)組變量聲明的語法是:

數(shù)據(jù)類型[] 數(shù)組變量;  或 數(shù)據(jù)類型 數(shù)組變量[];

下面是合法的數(shù)組聲明:

int[]  a;
int  a[];
Object[]  objs;
Object  arr[];

也就是說,[]既可以放在變量名的前面,也可放在變量名的后面,且[]與前后的類型名或變量名之間可以有空格,也可以沒有空格。
注意聲明數(shù)組變量時不能指定數(shù)組的長度。如下面的數(shù)組聲明是非法的。

int values[10];

數(shù)組對象的創(chuàng)建

java中使用關(guān)鍵字new創(chuàng)建數(shù)組對象,格式為:

數(shù)組變量名 = new 數(shù)組元素的類型 [數(shù)組元素的個數(shù)]; 

注意這里的類型必須與聲明的類型一致。如:

    int []  a;
    a  = new int[10];  //創(chuàng)建數(shù)組對象,賦值給變量a
    a  = new int[20];  //創(chuàng)建新的數(shù)組對象,給變量a重新賦值

也可以把聲明和賦值語句合一,如:

int[]  a = new int[10];

注意,數(shù)組的長度是在創(chuàng)建數(shù)組對象時設置的,而且必須要設置。而且,創(chuàng)建數(shù)組對象后,數(shù)組的長度是不能改變的。

數(shù)組對象的隱式創(chuàng)建

在實際編碼中,除了顯示的通過new操作符創(chuàng)建數(shù)組對象外,我們還可以通過直接初始化的方法隱式的創(chuàng)建數(shù)組對象。如:

    int[] a = {1,2,3}; 

上面語句聲明并實例化了一個整型數(shù)組,長度為3,元素的值就是{}中的3個整數(shù)。

    String[] values={"my","name","is"};

上面語句聲明并實例化了一個字符串數(shù)組,長度為3,元素的值就是{}中的3個字符串。

通過這種方式,定義的數(shù)組,我們后面可以改變元素值,但不能改變數(shù)組的長度,如:

        int[] a = {1,2,3};
        a[2]=5; //合法的,將第3個元素的值由初始值3改為5
        a[3]=1; //運行時拋數(shù)組越界異常

數(shù)組的初始化

對于通過new操作符創(chuàng)建的數(shù)組對象,創(chuàng)建后,在沒有給其中的數(shù)組元素賦值前,系統(tǒng)會自動根據(jù)數(shù)組類型給其中的數(shù)組元素一個默認值。
如下面表格:

數(shù)組類型 元素默認值 例子
byte,short,int,long 0 int[] a = new int[10];
float , double 0.0 float[] a = new float[10];
char 0 char[] a = new char[10];
boolean false boolean[] a = new boolean[10];
對象類型 null String[] strs = new String[10];

數(shù)組元素的訪問

java中數(shù)組是一個有序的、有長度限制的數(shù)據(jù)集合??梢酝ㄟ^下標獲取或設置數(shù)組中的元素值,注意下標是從0開始,下標的最大值為數(shù)組長度減1;如果下標越界,運行時會報ArrayIndexOutOfBoundsException異常。文章開頭的例子已經(jīng)演示了如何使用。
另外數(shù)組的長度可以通過其length屬性獲取,如:

    public void show(int[] a){
        for(int i=0;i<a.length;i++){
            System.out.println(a[i]);
        }
    }

上面代碼用數(shù)組的length屬性獲取了數(shù)組的長度,利用數(shù)組下標的方式循環(huán)獲取每個元素的值。
除了上述常規(guī)的利用數(shù)組下標獲取元素值外,在需要遍歷數(shù)組的每個元素值時,利用for循環(huán)的另外一種使用方式(一般稱為for -each方式)會更加簡單。代碼如:

    public void show(int[] a){
        for(int value:a){
            System.out.println(value);
        }
    }

其語法格式就是 for(數(shù)據(jù)類型 元素變量名 : 數(shù)組變量) 。可以看出,這種遍歷方式的代碼更加簡潔和方便,而且不易出錯。

空數(shù)組

最后我們介紹下空數(shù)組,空數(shù)組指該數(shù)組的元素個數(shù)為0。但需要強調(diào)的是,空數(shù)組仍然是個java對象,它與null不同。
創(chuàng)建空數(shù)組的方式如:

    int[]  a = new int[0];

注意長度必須填0,不能這樣寫:int[] a = new int[ ]; 這樣編譯無法通過。
對于空數(shù)組,調(diào)用length屬性,獲取的值為0。用for-each去遍歷空數(shù)組,是完全沒問題的,只不過不會進入循環(huán)罷了。如:

public void show(){
        int[] a = new int[0];
        System.out.println(a.length); //輸出為0
        for(int value:a){ //不會進入循環(huán)
            System.out.println(value);
        }
    }

小結(jié)

本篇文章,我們詳細介紹了數(shù)組的概念和使用。對于java數(shù)組,需要牢記如下幾點:
(1)數(shù)組是對象類型,不是簡單類型。
(2)數(shù)組是有長度的,而且數(shù)組對象創(chuàng)建后長度不能改變。
(3)根據(jù)下標取數(shù)組元素時,第一個元素的下標為0
下一篇文章我們將介紹多維數(shù)組的概念和使用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容