JAVA 对象的初始化过程和类的初始化过程

new创建对象的时候,java底层做了什么

public class DuiXiang{


private int no ;
private String name ;
private int age ;
{
age = 20;
}
public DuiXiang(int no,String name,int age){
this.no = no;
this.name = name;
this.age = age;
}
public static void main(String[] args){

DuiXiang dx = new DuiXiang(1,"zzz",25);
}
}

在对对象初始化的时候,java底层做了三件事情:

一、给对象的实例变量(非静态变量)分配空间,并且默认初始

二、声明初始化,对象初始化块的初始化,按照代码的顺序从上到下依次执行

三、构造函数的初始化

如下内存分析中,在做第一件事的时候,java在堆内存中给对象开辟空间,并默认初始化,用蓝笔代表byte,short,int,long为0 引用类型为null。

在做第二件事时,java代码中有初始化块,将这些初始化块中的属性初始化,将age重新赋值为20,用黄笔标注

在做第三件事时,java将构造函数中的属性初始化。用红笔标注。

实例变量是隶属于对象的,每个对象都有自己的一份实例对象,例如:再new一个DuiXiang这个类的对象dx2,java在对内存中会为这个对象再重新开辟一个内存,用来存放dx2中属性的值。JAVA 对象的初始化过程和类的初始化过程_第1张图片

你可能感兴趣的:(java)