Java基礎知識_內存

前述:利用一段較為充足暑假時間,對以前的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文件,故在書寫文件路徑時\一定要書寫成\\通過轉義得到所需的\。最後的二進制的輸入輸出方式,對我所想的結構體類型的數據存儲十分友好,並且可以通過循環來不斷的取文件中的數據,達到自己的目的。由此,感謝書寫過程中,其他博主的帖子給我的指引還有譚浩強老師的教材中的很多理論基礎。非常感謝!

 
 
 
Tags: