Java之數組

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/Julin1214/article/details/51477591
一 數組 

Java語言的數組變量是引用類型的變量。是多個類型相同變量的集合。
Java的數組是靜態數組。必須經過初始化方可使用。
(爲數組對象的元素分配內存空間,爲每個數組元素指定初始值 也就是通過new建立實例)。

二 數組初始化

 數組初始化有兩種初始化方式:

1 靜態初始化:初始化時由程序員顯示指定每個數組元素的初始值,由系統決定數組長度。

2 動態初始化:初始化時程序員只指定數組的長度,由系統元素爲數組分配初始值。

數組一旦初始化完成,數組元素的內存空間分配也就結束,程序只能改變數組元素的值,不能改變數組的長度。
不能同時對數組進行靜態和動態初始化,也就是說既指定了長度,也爲每個元素分配初始值。
Java的數組變量是一種引用類型的變量,數組變量並不是數組本身,它只是指向堆內存中的數組對象。

三 數組不一定要進行初始化
Java數組變量是引用類型變量,並不是數組本身,只需把引用變量本身指向有效的的數組對象,程序中即可使用該數組變量。
如果數組變量未指向有效的內存,未指向任何數組對象,程序不能使用此數組變量。
數組變量是一個引用變量,通常放在棧內存中(也可以放在堆內存中);而數組對象就是保存在堆內存中的連續內存空間。對數組執行初始化,其實並不是對數組變量進行初始化,而是對數組對象進行初始化,爲該數組對象分配一塊連續的內存空間,這塊連續的內存空間的長度就是數組的長度。

四 基本類型數組的初始化
基本類型數組而言,數組元素的值直接存儲在對應的數組元素中,因此基本類型數組的初始化比較簡單:程序直接爲數組分配內存空間,再將數組元素的值對應內存裏。
所有局部變量都是放在棧內存裏保存的,不管其是基本類型的變量,還是引用類型的變量,都是存儲在各自的方法棧區中;但引用類型變量所引用的對象(包括數組、普通的Java對象)則總是存儲在堆內存中。
堆內存中的對象通常是不予訪問,想訪問堆內存中的對象,要通過引用變量。
引用變量本質上只是一個指針,只要程序引用變量訪問的屬性,或者通過調用引用變量來調用方法,該引用變量將會由它所引用的對象代替。

五 引用類型數組初始化
引用類型數組的數組元素依然是引用類型的,數組元素存儲的還是引用,它指向另一塊內存,這塊內存裏存儲了該引用變量所引用的對象(包括數組和Java對象)

六 使用數組
當數組引用變量指向一個有效的數組對象之後,程序就可通過該數組引用變量來訪問數組對象。

七 數組元素就是變量
   
當程序需要多個類型相同的變量來保存程序狀態時,可以考慮使用數組來保存這些變量。當一個數組初始化完成後,就相當於定義了多個類型相同的變量。

用索引來使用數組元素時,將數組元素當成普通變量使用即可,包括訪問數組元素的值,爲數組元素賦值等。

八 沒有多維數組

對於int[][][]類型的數組,其數組元素就相當於int[][]類型的變量;對於int[][]類型的數組,其數組元素就相當於int[]類型的變量;對於int[]類型的數組,其數組元素就相當於int類型的變量。

所謂多維數組,其實只是數組元素依然是數組的1維數組:2微數組是數組元素是1維數組的數組,3維數組是數組元素是2維數組的數組,4維數組是數組元素是3維數組的數組。。。。N維數組是數組元素是(N-1)維數組的數組。

Java允許將多維數組當成1維數組處理。初始化多維數組時可以先只初始化最左邊的維數,此時該數組的每個元素都相當於一個數組引用變量,這些數組元素還需要進一步初始化。

數組的length屬性返回系統爲該數組所分配的連續內存空間的長度。

如果定義一個object[]類型的數組,此時每個數組元素都相當於一個object類型的引用變量,可以指向任何對象(包括數組對象和普通Java對象)。
在使用多維數組時,應該多從內存控制的角度來把握程序,而不是僅僅停留在代碼表面。



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