系统相关
首页 > 系统相关> > 第六节、Java中的内存划分

第六节、Java中的内存划分

作者:互联网

6.1 java的内存需要划分成为5个部分:

  1. 栈(Stack):存放的都是方法中的局部变量。方法的运行一定要在栈当中运行。

  1. 堆(heap):凡是 new 出来的东西,都在堆当中。

    • 堆内存里面的东西都有一个地址值:16进制

    • 堆内存里面的数据,都有默认值。规则:

      • 如果是整数 默认为0

      • 如果是浮点数 默认为0.0

      • 如果是字符 默认为‘\u0000’

      • 如果是布尔 默认为false

      • 如果是引用类型 默认为null

  2. 方法区(Method Area):存储.class 相关信息,包含方法的信息。

  3. 本地方法栈(Native Method Stack):与操作系统相关。

  4. 寄存器(pc Register):与CPU相关。

6.2 一个数组的内存图

 

 

方法区(Method Area):存储.class 相关信息,包含方法的信息。

栈(Stack):存放的都是方法中的局部变量。方法的运行一定要在栈当中运行。

堆(heap):凡是 new 出来的东西,都在堆当中。

6.3数组索引越界异常(常见问题之一)

 1 /*
 2 数组的索引编号从0开始,一直到“数组的长度-1”为止
 3 ​
 4 如果访问数组元素的时候,索引编号并不存在,那么将会发生数组索引越界异常
 5 ArrayIndexOutOfBoundException
 6 ​
 7 原因:索引编号写错了。
 8 解决:修改成为存在的正确索引编号。
 9 */
10 public class Demo01ArrayIndex {
11     public static void main(String[] args) {
12         int[] array = {15,25,35};
13         System.out.println(array[0]);
14         System.out.println(array[1]);
15         System.out.println(array[2]);
16         System.out.println(array[3]);
17     }
18 }

 

6.4空指针异常(常见问题之二)

 1 /*
 2 * 所有的引用类型变量,都可以赋值为一个null值,但是代表其中什么都没有。
 3 *
 4 * 数组必须进行new 初始化才能使用其中的元素。
 5 * 如果只是赋值一个null,没有进行new 创建。
 6 * 那么将会发生;
 7 * 空指针异常 NullPointerException
 8 *
 9 * 原因:忘了new
10 * 解决:补上new
11 * */
12 public class Demo02ArrayNull {
13     public static void main(String[] args) {
14         int[] array = null;
15 //        array = new int[3];
16         System.out.println(array[0]);
17 ​
18     }
19 }

 

 

标签:Java,System,内存,println,new,array,第六节,out
来源: https://www.cnblogs.com/code-study-notes/p/15352346.html