黑马程序员-对象的初始化过程

本文详细解析了Java中对象初始化的过程,从加载类文件到构造函数初始化等各个步骤进行了详尽说明,帮助读者理解对象创建的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

------- android培训java培训、期待与您交流! ----------


Person p=new Person("zhangsan",20);

对象初始化过程:

1.在栈内存中,开辟main函数的空间,建立main函数的变量 p。


2.加载类文件:因为new要用到Person.class,所以要先从硬盘中找到Person.class类文件,并加载到内存中。加载类文件时,除了非静态成员变量(对象的特有属性)不会被加载,其它的都会被加载。

记住:加载,是将类文件中的一行行内容存放到了内存当中,并不会执行任何语句。---->加载时期,即使有输出语句也不会执行。
静态成员变量(类变量) ----->方法区的静态部分
静态方法              ----->方法区的静态部分
非静态方法(包括构造函数) ----->方法区的非静态部分
静态代码块 ----->方法区的静态部分
构造代码块 ----->方法区的静态部分

注意:在Person.class文件加载时,静态方法和非静态方法都会加载到方法区中,只不过要调用到非静态方法时需要先实例化一个对象,对象才能调用非静态方法。如果让类中所有的非静态方法都随着对象的实例化而建立一次,那么会大量消耗内存资源,所以才会让所有对象共享这些非静态方法,然后用this关键字指向调用非静态方法的对象。


3.执行类中的静态代码块:如果有的话,对Person.class类进行初始化。


4.开辟空间:在堆内存中开辟空间,分配内存地址。


5.默认初始化:在堆内存中建立 对象的特有属性,并进行默认初始化。


6.显示初始化:对属性进行显示初始化。


7.构造代码块:执行类中的构造代码块,对对象进行构造代码块初始化。


8.构造函数初始化:对对象进行对应的构造函数初始化。


9.将内存地址赋值给栈内存中的变量p。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值