Java内存分析详解
1. Java内存的一些概念
-
栈空间(stack) --> 连续的存储空间,遵循后进先出原则,存放基本变量类型(会包含这个基本类型的具体数值,)
-
堆空间(heap) --> 不连续的空间,存放new的对象和数组,可以被所有的线程共享,不存放别的对象引用;
-
方法区(method) --> 在堆空间内,包含了所有的class和static变量,可以被所有的线程共享。
-
数据类型的默认值:
- 基本数据类型默认值:
- 数值型:0
- 浮点型:0.0
- 布尔型:false
- 字符型:\u0000
- 引用类型默认值:null
- 基本数据类型默认值:
2. 图解分析示例
3. 数组的三种初始化
-
静态初始化
int[] a = {1,2,3}; Man[] mans = {new Man(1,1), new Man(2,2)};
-
动态初始化
int[] a = new int[2]; a[0] = 1; a[1] = 2;
-
数组的默认初始化
- 数组是引用变量,它的元素相当于类的实例变量,因此数据一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。
public static void main(String[] args) {
//静态初始化:创建+赋值
int[] a = {1,2,3,4,5,6,7,8,9};
System.out.println(a[0]); //1
//动态初始化:包含默认初始值
int[] b = new int[10];
b[0] = 10;
System.out.println(b[0]); //10
System.out.println(b[1]); //0
System.out.println(b[2]); //0
}