參考鏈接: 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告訴計算機這是一個整型數據,[]告訴計算機這是一個連續存儲的內存地址空間,簡單點說一個連續數據的存儲空間就是數組,數組只是一個名稱!!當然我只是簡略的這樣說,實際上數組是很復雜的!!
