如何理解數組在Java中做爲一個類?【完整版】

這是昨天一個小夥伴去面試被問到的問題。java

問題分析

Java中數組的使用方法和C/C++中的比較相似,可是在Java中它的本質是一個Java類,只是這個類比較特殊,因此很容易被一些程序員誤解。建議在回答該問題的時候,全面地回顧下Java中數組的特性。程序員

你們都知道,Java的數據類型能夠分爲兩種:基本類型和引用類型。那麼數組屬於哪種類型呢?很顯然,數組確定不屬於基本類型,由於基本類型只有那8種(byte、char、short、int、long、float、double、boolean)。那麼數組就應該屬於引用類型了,也就是說每個數組實例都是一個對象,這些對象同屬於一個類。面試

首先,咱們來看看如何使用一個Java數組。大體有如下幾個步驟:後端

  1. 聲明數組,使用一個引用來操做數組數組

  2. 使用new關鍵字來爲數組建立所須要的內存空間,而且返回一個引用的值,還能夠用{}符號來爲數組賦初始化值ide

  3. 使用數組的下標對數組的值進行操做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名稱。

相關文章
相關標籤/搜索