程序执行过程中堆内存的简单分析

JAVA语言中除基本类型之外的变量类型,都称之为引用类型。
JAVA中对象是通过引用reference对其操作的。

新建对象时,引用类型的数据都是null,基本数据类型 int 是 0  string 是null boolean 是false  (默认初始化)

方法:参数传递的值是 值传递。

局部变量 必须初始化,成员变量会被系统默认初始化。

栈:自动分配连续的空间,后进先出,一般用来放置局部变量,数据使用完毕之后,会自动释放

堆:不连续,用来放置 new出来的对象,堆中的数据都会有默认初始化值。引用类型的数据都是null,基本数据类型 int 是 0  string 是null boolean 是false  (默认初始化)


方法区:属于堆的一部分,存放类的信息(代码)、static变量、常量池(字符串常量)等

解析:
1、主函数中定义一个  int  x=3;
主函数加载时,主函数就在内存中的栈中 开辟一个空间,此空间中就会定义一个变量 ,并且赋值为3.

2、主函数中创建一个 int[] x=new int[3];

左边 int[] x,在栈内存中定义了一个变量 x,
 
new int[3],在堆内存中开辟了一个空间,每个在堆内存中存在的数据都会有一个地址值。

= 时,就将x的引用指向了new 对象在堆内存中的地址值。


注:操作对象就是操作地址。
例子:
//通过类加载器 Class LOader加载Student类,加载后,在方法区中就有了Student中的类的信息
Student s1=new Student();
s1.name="张三";

猜你喜欢

转载自blog.csdn.net/pengyu1801/article/details/83957164