1.内存管理,java数组使用前都要分配内存空间
javaSe中内存主要是分为4个模块,学习java,明白内存里面都存了什么很重要。
1.heap堆:new 出来的对象,和成员变量都在堆里,堆中的内存是动态分配的,只要运行到有需要就可以运行
2.stack栈:主要用来存放局部变量,当这个方法运行完后,局部变量就消失了。(形参是局部变量,也分配到栈区)
3.data segment 数据管理:主要是静态变量和字符串常量等
4.code segment代码管理:存放代码的地方,代码运行前都先加载到这里保存
应用类型:除了8个基本类型,都是引用类型,引用类型在内存中是分为两部分存储的,如string A = new string ("hello");在栈里就分配一块内存存储局部变量A,然后在堆里分配内存存储("hello"),栈中的就是应用,应用指向堆里的真实值。简单理解,应用类型在内存中都是一小块内存指向一大块内存。
java数组:
数组在定义时可以不分配内存空间,但是在使用前就必须要定义内存,要不然就会报空指针异常。
如:
1. int[] arr = null;
此时只是在栈中声明了一个 arr 数组,但并未对其分配空间,所以它没有指向
2. int[] arr = new int[6];
此时在栈中声明了一个arr数组,并且在堆中开辟了一块空间,此时 arr 已经分配内存了
你的日积月累迟早会成为别人的望尘莫及。