第六节、Java中的内存划分
作者:互联网
6.1 java的内存需要划分成为5个部分:
-
栈(Stack):存放的都是方法中的局部变量。方法的运行一定要在栈当中运行。
-
局部变量:方法的参数,或者是方法{}内部的变量。
-
作用域:一旦超出作用域,立刻从栈内存当中消
-
堆(heap):凡是
new
出来的东西,都在堆当中。-
堆内存里面的东西都有一个地址值:16进制
-
堆内存里面的数据,都有默认值。规则:
-
如果是整数 默认为0
-
如果是浮点数 默认为0.0
-
如果是字符 默认为‘\u0000’
-
如果是布尔 默认为false
-
如果是引用类型 默认为null
-
-
-
方法区(Method Area):存储.class 相关信息,包含方法的信息。
-
本地方法栈(Native Method Stack):与操作系统相关。
-
寄存器(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