前述:利用一段較為充足暑假時間,對以前的Java學習進行一個系統性的回顧,對於部分知識點進行記錄和積累。
Java中的記憶體
一 Java中的記憶體劃分:
Java中記憶體主要劃分為五部分
- 棧(Stack):存放的都是方法中的區域性變數。方法的執行一定要在棧當中執行
- 區域性變數:方法的引數,或者是方法{}內部的變數
- 作用域:一旦超出作用域,立刻從棧記憶體當中消失
- 堆(Heap):凡是new出來的東西,都在堆當中
- 堆記憶體裡面的東西都有一個地址值:16進位制
- 堆記憶體裡面的資料,都有預設:
- 如果是整數 預設為0
- 如果是浮點數 預設為0.0
- 如果是字元 預設為'\u0000'
- 如果是布林 預設為false
- 如果是引用型別 預設為null
- 方法區(Method Area):儲存.class相關資訊,包含方法的資訊。
- 本地方法棧(Native Method Stack):與作業系統相關。
- 暫存器(PC Register):與CPU相關。
二 建立陣列時的記憶體圖:
只有一個陣列的記憶體圖
有兩個獨立陣列的記憶體圖
兩個引用指向同一個陣列的記憶體圖
二 :
三 :
四 :
綜上:
程式碼補充:
總結
結合此次設計,在學習過程遇到的錯誤,因為習慣了網址的書寫方式,故在書寫檔名的檔案路徑時,忘記了轉義字元的事情。沒有在指定資料夾下面發現要儲存使用的dat檔案,卻在程式目錄中發現了負責儲存的dat檔案,故在書寫檔案路徑時\一定要書寫成\\通過轉義得到所需的\。最後的二進位制的輸入輸出方式,對我所想的結構體型別的資料儲存十分友好,並且可以通過迴圈來不斷的取檔案中的資料,達到自己的目的。由此,感謝書寫過程中,其他博主的帖子給我的指引還有譚浩強老師的教材中的很多理論基礎。非常感謝!