JAVA - 數組初始化

JAVA的數組變量是引用類型的變量,並不是數組對象本身,只要讓數組變量指向有效的數組對象,程序中就可使用該數組變量。聲明數組只是得到了一個數組的引用併爲該引用分配了存儲空間,但是並沒有給數組對象本身分配任何空間。想要給數組對象分配存儲空間,必須進行初始化

* 默認初始化

數組元素相當於對象的成員變量,默認值跟成員變量的規則一樣

int                        0

float                     0.0f

double                 0.0

boolean               false

char                     ' '

引用數據類型        null

* 靜態初始化

在數組創建的地方進行初始化,採用這種初始化的方式,數組的存儲空間的分配是由編譯器完成的當創建一個非基本類型的數組時,實際上創建的是引用數組可以直接使用new在數組裏創建元素

:new可應用於基本類型的數組,但是不能應用於單個的基本類型

int[] arr1 = {1,2,3,4,5};

Integer[] arr2 = {new Integer(1), new Integer(2), new Integer(3)};

注:這種聲明方式其實只是Java初始化數組的語法糖,其等價於int[] arr1 = new int[]{1,2,3,4,5};

* 動態初始化方式一

new聲明,之後分別初始化數組中的每個元素,聲明時需指定數組大小

注:如果數組元素類型爲基本數據類型,在完成new 操作之後,數組中的元素會自動初始化爲空值,可以直接使用,但是數組元素爲引用類型,在完成new操作之後,沒有給引用類型賦值,就直接使用數組中的元素,會產生運行時異常

int[] array2 = new int[3];  
array2[0] = 1;  
array2[1] = 2;  
array2[2] = 3;  

* 動態初始化方式二

new聲明的同時初始化,這種方式不能指定數組的大小,數組大小由初始化列表中數據個數決定

int[] array3 = new int[]{1,2,3};  

* 給數組的引用賦值

int[] arr1 = {1,2,3,4,5};
int[] arr2;
arr2 = arr1;

注:Java實際上沒有多維數組,只有釋爲“數組的數組。”,因此可以方便地構造一個“不規則”數組,即數組的每一行有不同的長度:

int[][] balances = new int[LineNum + 1][];
for(int n = 0; n < balances.length; n++) {
    balances[n] = new int[n+1];
}
System.out.println(Arrays.deepToString(balances));

其內存分配如圖所示:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章