這是昨天一個小夥伴去面試被問到的問題。java
Java中數組的使用方法和C/C++中的比較相似,可是在Java中它的本質是一個Java類,只是這個類比較特殊,因此很容易被一些程序員誤解。建議在回答該問題的時候,全面地回顧下Java中數組的特性。程序員
你們都知道,Java的數據類型能夠分爲兩種:基本類型和引用類型。那麼數組屬於哪種類型呢?很顯然,數組確定不屬於基本類型,由於基本類型只有那8種(byte、char、short、int、long、float、double、boolean)。那麼數組就應該屬於引用類型了,也就是說每個數組實例都是一個對象,這些對象同屬於一個類。面試
首先,咱們來看看如何使用一個Java數組。大體有如下幾個步驟:後端
聲明數組,使用一個引用來操做數組數組
使用new關鍵字來爲數組建立所須要的內存空間,而且返回一個引用的值,還能夠用{}符號來爲數組賦初始化值ide
使用數組的下標對數組的值進行操做spa
Java代碼表示:code
{ ([] ) { [] []{, , }; [] []; [] ; [] ; ( ;.;){ ..([]); } ( :){ ..(); } } }
輸出orm
20 21 22 Java後端技術棧 lawt
兩種類型的數組有一個共同的特色,就是在建立的時候必須指定一個長度。其實,這是由於這些數組在建立的時候,會動態地爲這些類建立指定數目的成員變量,而且爲這些成員變量賦初始值。可是Java不會讓程序員像使用普通類那樣去操做這些成員變量,而是經過[]符號,使用下標訪問這些數據。另外,Java還爲每個數組對象提供了一個length屬性,用於指導該數組的長度。對象
那麼,數組的類名是什麼呢?
其實數組的類型與它存儲的數據類型有關,它們的類名能夠經過獲取數組的Class類型類獲取,以下:
..(.().()); ..(.().());
輸出
[I [Ljava.lang.String;
能夠看得出,數組類名老是以左中括號開頭,而後就是不一樣的標識。例如,int類型的數組則是I字符標識,字符串類型數組則是Ljava.lang.String
。經過這些標識,程序員就能夠較爲快速地判斷出數組存儲的是哪種類型的數據。
若是把上面代碼調整一下,不給數組元素賦值:
{ ([] ) { [] []; [] []; ( ;.;){ ..([]); } ( :){ ..(); } ..(.().()); ..(.().()); } }
輸出結果爲:
0 0 0 null null [I [Ljava.lang.String;
以上的輸出即是數組元素在沒有賦值時候的默認值。
Java的數組本質是一個類,該類還保存了數據類型的信息。該類經過成員變量的形式來保存數據,而且經過[]加上下標來訪問數組數據。在處理基本類型數據時,數組保存的是變量的值,
好比int [] array=new int[3];
這時候並無爲數組中的元素賦值,可是數組會把這些變量的值初始化爲int [] array=new int[]{0,0,0};
;
並且處理引用類型是數組保存的是數據的引用,若是程序員未提供初始值,數組會把這些變量的值初始化爲null,好比String[] strings = new String[2];
默認初始化String[] strings = new String[]{null,null};
。
能夠使用ints.getClass().getName();
來獲取對應的Class名稱。