首先得記住一點:Java中的數組,是個對象。也就是說,你不能聲明一個數組,你只能聲明一個指針。這個指針指向一個對象,這個對象表明一個數組。數組
Java代碼中的以下聲明:數據結構
int students[];函數
至關於C++代碼:spa
即聲明瞭一個指向數組對象的指針,數組元素爲int。3d
其中Array爲用戶自定義類型,模板參數表明元素類型:指針
數組元素能夠是int:對象
能夠是指向對象的指針:blog
還能夠是指向另外一個數組對象的指針繼承
以上這些C++代碼,在Java中有更簡潔的寫法,以下:io
或者以下形式:
int students1[];
Student students2[];
int students[][];
Student students4[][];
聲明指向數組對象的指針時,能夠無論數組中包含的元素個數(即使指定了,也是聾子的耳朵),但真的產生數組時,必須指定元素個數:
這就至關於C++中
聲明的時候不須要指定元素個數:
真正產生的時候須要指定元素個數:
爲何咱們上面用C++來解釋Java代碼時,用了用戶自定義的類Array?C++不是自己就有數組嗎?
C++自己的數組,聲明跟建立分不開——聲明時即建立。
除非是作函數的形參
此時元素個數寫跟不寫一個樣
但這種寫法其實就是下邊這種寫法
即students7的真實類型不是指向數組的指針(在Java中,這樣寫students7就是指向數組的指針),而是指向數組第一個元素的指針。C++的數組看上去跟Java的數組如出一轍,但其實,差異大了。
我以爲C++從C語言那裏繼承的歷史包袱——用指向數組第一個元素的指針表明指向整個數組的指針的作法,真是lowB到家了。如同用指向鏈表第一個結點的指針表明整個鏈表這個數據結構同樣lowB。
lowB:low Byte
關於C語言數組跟指向數組第一個元素的指針的關係:decay的概念