java中的內存劃分

java中的內存劃分

java中的內存劃分須要劃分爲五個部分:

1. 棧(stack)

方法的運行必定要在棧中,存放的都是方法中的局部變量。java

局部變量:方法的參數,護着方法內部的變量數組

做用棧:一旦超出做用域,馬上從棧內存中消失。操作系統

2. 堆(heap)

凡是new出來的東西都在堆當中,堆內存裏面的東西都一個地址值:16進制。指針

堆內存裏面的數據都有默認值。其規則爲:code

若是是整數,默認爲0。索引

若是是浮點數,默認爲0.0.內存

若是是字符,默認爲'u000'。作用域

若是是布爾值,默認爲false。io

若是是引用類型,默認爲null。for循環

3. 方法區(Method Area)

存儲.class相關信息,包含方法的信息。

4. 本地方法棧(Native Method Stack)

與操做系統相關

5. 寄存器(區)(PC Register)

與CPU相關

常見異常

數組索引越界異常

若是訪問數組元素的時候,索引編號並不存在,那麼將會發生數組索引越界異常

ArrayIndexOutOfBoundsException.
  • 緣由:索引編號寫錯了
  • 解決:修改爲爲存在的正確索引編號。
  • 全部的引用類型變量,均可以賦值爲一個null值,可是表明其中什麼都沒有。

數組必須進行new初始化才能使用其中的元素。若是賦值了一個null,沒有進行new建立,那麼將會發生空指針異常

NullPointerException.
  • 緣由:忘了new。
  • 解決:補上new。

如何獲取數組的長度

格式

  1. 數組名稱.length(這將會獲得一個數字,表明數組的長度)
  2. 數組名稱.fori(能夠快速生成for循環(i < arr.length))

數組能夠做爲方法的參數

  • 當調用方法時,向方法的小括號進行傳參,傳遞進去的實際上是數組的地址值。
  • 一個方法能夠有0,1,多個參數,可是隻能有0或1個返回值,不能有多個返回值。
  • 若是但願一個方法中產生了多個結果數據進行返回,能夠使用數組做爲返回值類型。
  • 任何數據類型都能做爲方法的參數類型或者返回值類型。
  • 數組做爲方法的參數,傳遞進去的實際上是數組的地址值。
  • 數組做爲方法的返回值,返回的實際上是數組的地址值。
相關文章
相關標籤/搜索