Java中的數(shù)組

說(shuō)說(shuō)Java里有equals(上) - Java那些事兒這篇文章里,文末我們提到了String底層是char數(shù)組來(lái)實(shí)現(xiàn)的,好多人當(dāng)年上學(xué)時(shí)被二維數(shù)組,三維數(shù)組嚇哭了吧。我們今天來(lái)講講數(shù)組,數(shù)組非常的重要,很多常用類,比如String等底層都是用數(shù)組來(lái)實(shí)現(xiàn)的,后續(xù)我們會(huì)一一講到,多少人很久沒(méi)用數(shù)組了?是否都在用ArrayList呀?這兒先賣個(gè)關(guān)子,ArrayList底層也是數(shù)組實(shí)現(xiàn)的。

所謂數(shù)組,是相同數(shù)據(jù)類型的元素按一定順序排列的集合?,F(xiàn)在我們來(lái)看一看數(shù)組在內(nèi)存中的樣子,話不多說(shuō),上代碼:

這是一段教科書級(jí)別的代碼,讓我想起了中學(xué)時(shí)候?qū)W過(guò)的文章,孔乙己?jiǎn)枺很钕愣沟能钭钟袔追N寫法?先編譯一下,我們打開(kāi)編譯好的class文件,反編譯一下看看:

三種數(shù)組的聲明方式編譯后,最后創(chuàng)建的方式都是一樣的,都給我們加了new關(guān)鍵字,順手還把charArr3的聲明與賦值一體化了,編譯器你管得也太多了吧。評(píng)論區(qū)里有人說(shuō)反編譯后和我反編譯后的代碼不一樣,本專欄所有文章是基于JDK1.8講解的,反編譯工具是idea自帶的反編譯工具,不一樣的原因可能是各位的JDK版本或反編譯工具和我不一致。用IDE的代碼聯(lián)想功能看一下:

恩,沒(méi)錯(cuò),Object類有的方法它都有,它還多了一個(gè)length屬性(注意不是方法)。個(gè)人認(rèn)為,在Java層面,我們完全可以把數(shù)組當(dāng)成對(duì)象來(lái)看待,下圖我們模擬一下數(shù)組在堆內(nèi)存中的大致的樣子,每一個(gè)數(shù)組都是按順序排列在堆內(nèi)存中,正因?yàn)槿绱耍覀兛梢酝ㄟ^(guò)數(shù)組+[下標(biāo)]的方式來(lái)直接訪問(wèn)數(shù)組里的元素。

我們?cè)賮?lái)看看二維數(shù)組:

這里還是用了三種方式去聲明,還是反編譯class文件看一下,雖然有點(diǎn)差別,但還是大同小異,都給我們加了new關(guān)鍵字(這次沒(méi)有把我們的z數(shù)組和賦值一體化)。

老規(guī)矩,我們畫一畫。

嘿嘿,不就是數(shù)組里面套數(shù)組嘛,不要被二維這兩個(gè)字給嚇到了,哪有什么二維數(shù)組,其實(shí)就是二級(jí)數(shù)組而已。上圖中只畫出了數(shù)組x,有興趣的朋友可以自行畫一下y和z。

思考以下代碼的執(zhí)行結(jié)果:

如果喜歡本系列文章,請(qǐng)為我點(diǎn)贊或順手分享,您的支持是我繼續(xù)下去的動(dòng)力,您也可以在評(píng)論區(qū)留言想了解的內(nèi)容,有機(jī)會(huì)本專欄會(huì)做講解,最后別忘了關(guān)注一下我。

轉(zhuǎn)載無(wú)限歡迎,但請(qǐng)注明「作者」和「原文地址」。轉(zhuǎn)載請(qǐng)?jiān)谖闹斜A舸硕危兄x您對(duì)作者版權(quán)的尊重。如需商業(yè)轉(zhuǎn)載或刊登,請(qǐng)聯(lián)系作者獲得授權(quán)。

上一篇:說(shuō)說(shuō)Java里的equals(上) - Java那些事兒

下一篇:String是一個(gè)很普通的類 - Java那些事兒

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 數(shù)組No11 數(shù)組:存放一組相同類型數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu) 數(shù)組本身是引用數(shù)據(jù)類型,數(shù)組中的元素可以是基本數(shù)據(jù)類型...
    征程_Journey閱讀 735評(píng)論 0 1
  • 數(shù)組是由同一類型對(duì)象護(hù)著基本數(shù)據(jù)組成。 數(shù)組是對(duì)象,先定義數(shù)組名字,用動(dòng)態(tài)的方式分配數(shù)組空間,再初始化的。 每個(gè)數(shù)...
    掠光者閱讀 699評(píng)論 0 1
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,669評(píng)論 18 399
  • 去年10月底我看了一遍文章,作者提到把自己的朋友圈關(guān)閉一個(gè)月,我覺(jué)得挺有趣,也想嘗試一下,但是不知道怎么關(guān),...
    chinangua閱讀 425評(píng)論 0 0
  • 應(yīng)該到了16歲的時(shí)候,還有一場(chǎng)兇險(xiǎn)在等著我 時(shí)間很短的一場(chǎng)災(zāi)難,至今一想起都會(huì)冒冷汗 但是生命對(duì)我,還是那么的待見(jiàn)...
    e0c9b0c45626閱讀 533評(píng)論 5 3

友情鏈接更多精彩內(nèi)容