數組的length哪里來的


參考鏈接:    https://www.cnblogs.com/qing-gee/p/12090216.html   

                 https://www.iteye.com/blog/wallimn-332947

https://zhidao.baidu.com/question/2208438210718855348.html

在學習 java 基礎中  關於長度有三個東東  length  length()  size()    很容易混淆

String 類的 length() 方法    表示字符串的長度

 

 ArrayList 類 size() 方法    表示集合的長度

 

 

 奇怪的事情發生了 

那么length 到底在哪呢??? 無論定義什么類型的數組都可以用length 屬性

 length 表示數組的長度

 

作為超類(上帝類) Objdect 中也沒有 length 屬性

在JDK的源碼中 length這個屬性 在各種數據類型 都直接或間接指向了String類中 char value[]             

 

更奇怪的事情發生了 

java 沒有單獨創建數組這個類   而且也找不到value.length 屬性 是在哪一行代碼里定義出來  直接就 value.length  這么硬(沒辦法誰讓人家是JDK)

分析

可以想象下在String 類中  創建了char[]   字符數組 來存儲 字符串

那么char 字符數組 是怎么創建出來的    個人感覺這個計算機底層有關   

還有就是如果有數組這個類  那么也得有個地方(或者說容器)來存儲數組里的數據       

就好比一生二  二生三  三生萬物   突然想知道 一是怎么來的

這里感覺是(借用沉默的王二的說法)java隱藏了  借用String類  直接定義了length的屬性 省去了創建數組的類 

最后看到了這個 https://www.iteye.com/blog/wallimn-332947   https://zhidao.baidu.com/question/2208438210718855348.html

------------------------------------------------------------------------------ 
1。length不是array的方法或者屬性 
這個很好證明:new個數組出來   getDeclaredFields()是0 
2。java對數組的操作是指令級的。 

------------------------------------------------------------------------------ 

 這個涉及到編譯原理的問題,我只能說,這是一個編譯規范。在規范中比如:int[],中的int告訴計算機這是一個整型數據,[]告訴計算機這是一個連續存儲的內存地址空間,簡單點說一個連續數據的存儲空間就是數組,數組只是一個名稱!!當然我只是簡略的這樣說,實際上數組是很復雜的!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM