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.
如何獲取數組的長度
格式
- 數組名稱.length(這將會獲得一個數字,表明數組的長度)
- 數組名稱.fori(能夠快速生成for循環(i < arr.length))
數組能夠做爲方法的參數
- 當調用方法時,向方法的小括號進行傳參,傳遞進去的實際上是數組的地址值。
- 一個方法能夠有0,1,多個參數,可是隻能有0或1個返回值,不能有多個返回值。
- 若是但願一個方法中產生了多個結果數據進行返回,能夠使用數組做爲返回值類型。
- 任何數據類型都能做爲方法的參數類型或者返回值類型。
- 數組做爲方法的參數,傳遞進去的實際上是數組的地址值。
- 數組做爲方法的返回值,返回的實際上是數組的地址值。