Java中的陣列
在說說Java裡有equals(上) - Java那些事兒這篇文章裡,文末我們提到了String底層是char陣列來實現的,好多人當年上學時被二維陣列,三維陣列嚇哭了吧。我們今天來講講陣列,陣列非常的重要,很多常用類,比如String等底層都是用陣列來實現的,後續我們會一一講到,多少人很久沒用陣列了?是否都在用ArrayList呀?這兒先賣個關子,ArrayList底層也是陣列實現的。
所謂陣列,是相同資料型別的元素按一定順序排列的集合。現在我們來看一看陣列在記憶體中的樣子,話不多說,上程式碼:
這是一段教科書級別的程式碼,讓我想起了中學時候學過的文章,孔乙己問:茴香豆的茴字有幾種寫法?先編譯一下,我們開啟編譯好的class檔案,反編譯一下看看:
三種陣列的宣告方式編譯後,最後建立的方式都是一樣的,都給我們加了new關鍵字,順手還把charArr3的宣告與賦值一體化了,編譯器你管得也太多了吧。評論區裡有人說反編譯後和我反編譯後的程式碼不一樣,本專欄所有文章是基於JDK1.8講解的,反編譯工具是idea自帶的反編譯工具,不一樣的原因可能是各位的JDK版本或反編譯工具和我不一致。用IDE的程式碼聯想功能看一下:
恩,沒錯,Object類有的方法它都有,它還多了一個length屬性(注意不是方法)。個人認為,在Java層面,我們完全可以把陣列當成物件來看待,下圖我們模擬一下陣列在堆記憶體中的大致的樣子,每一個陣列都是按順序排列在堆記憶體中,正因為如此,我們可以通過陣列+[下標]的方式來直接訪問陣列裡的元素。
我們再來看看二維陣列:
這裡還是用了三種方式去宣告,還是反編譯class檔案看一下,雖然有點差別,但還是大同小異,都給我們加了new關鍵字(這次沒有把我們的z陣列和賦值一體化)。
老規矩,我們畫一畫。
嘿嘿,不就是陣列裡面套陣列嘛,不要被二維這兩個字給嚇到了,哪有什麼二維陣列,其實就是二級陣列而已。上圖中只畫出了陣列x,有興趣的朋友可以自行畫一下y和z。
思考以下程式碼的執行結果:
如果喜歡本系列文章,請為我點贊或順手分享,您的支援是我繼續下去的動力,您也可以在評論區留言想了解的內容,有機會本專欄會做講解,最後別忘了關注一下我。
轉載無限歡迎,但請註明「作者」和「原文地址」。轉載請在文中保留此段,感謝您對作者版權的尊重。如需商業轉載或刊登,請聯絡作者獲得授權。
相關文章
- 第81節:Java中的陣列Java陣列
- 初識Java(Java陣列-陣列的基本操作)Java陣列
- Java的 陣列Java陣列
- Java 中初始化陣列Java陣列
- Java中List陣列互轉Java陣列
- Java陣列03:陣列使用Java陣列
- Java陣列的使用Java陣列
- java——陣列Java陣列
- Java 陣列Java陣列
- Java陣列Java陣列
- Java中陣列及相關類的使用Java陣列
- java陣列中重複元素的去重Java陣列
- 【Java】int[] 陣列 和 Integer陣列的轉換Java陣列
- Java 中陣列轉換為 ListJava陣列
- 【Java】尋找陣列中“主要元素”Java陣列
- Java中List與陣列互轉Java陣列
- JAVA的陣列基本用法Java陣列
- java陣列元素的引用Java陣列
- Java陣列的運用Java陣列
- scala陣列與java陣列對比陣列Java
- Java(二)陣列Java陣列
- Java - 7 陣列Java陣列
- JAVA陣列案例!Java陣列
- Ruby中的陣列陣列
- Go中的陣列Go陣列
- Java 定義長度為 0 的陣列 / 空陣列Java陣列
- java陣列遍歷的方法Java陣列
- leetcode-陣列中兩元素的最大乘積(Java)LeetCode陣列Java
- JavaScript中對陣列和陣列API的認識JavaScript陣列API
- java大陣列劃分為若干小陣列Java陣列
- Java介面與陣列Java陣列
- Java二維陣列Java陣列
- Java陣列小白版Java陣列
- JAVA 陣列 練習Java陣列
- java04(陣列)Java陣列
- c++中的陣列C++陣列
- 陣列中的逆序對陣列
- Java中查詢陣列多數元素的4種方法Java陣列