Person p = new Person("li",20); 到底干了些什么?
2017-10-11 15:49
225 查看
Person P = new Person();
这是简单的创建对象的一个过程,那么,在这个过程中,具体发生了什么?
我们来简单探究一下这个过程。
第一步: new Person(),使用到了Person.class 文件,JVM会找到Person.class文件,并将其加载到内存中。
第二步:类加载之后,会执行类中static代码块,如果有的话,给这个类进行初始化。
第三步:在堆内存中开辟空间,并分配内配内存地址。
第四步:在堆内存中建立对象的特有属性,并进行默认初始化。
第五步:对属性进行显性初始化
第六步:对属性进行构造代码块初始化
第七步:对属性进行对象的构造函数初始化
第八步:将内存中的地址赋给栈内存中的P 变量
如果这个类中有静态变量。静态变量不在堆中,而是方法区中。
这是简单的创建对象的一个过程,那么,在这个过程中,具体发生了什么?
我们来简单探究一下这个过程。
第一步: new Person(),使用到了Person.class 文件,JVM会找到Person.class文件,并将其加载到内存中。
第二步:类加载之后,会执行类中static代码块,如果有的话,给这个类进行初始化。
第三步:在堆内存中开辟空间,并分配内配内存地址。
第四步:在堆内存中建立对象的特有属性,并进行默认初始化。
第五步:对属性进行显性初始化
第六步:对属性进行构造代码块初始化
第七步:对属性进行对象的构造函数初始化
第八步:将内存中的地址赋给栈内存中的P 变量
如果这个类中有静态变量。静态变量不在堆中,而是方法区中。
相关文章推荐
- Java 面向对象 Person p = new Person("zhangsan",20) ;该句话都做了什么事情?
- 深入理解利用new创建对象的执行过程以Person p=new Person("张三",20);为例
- 深入理解利用new创建对象的执行过程以Person p=new Person("张三",20);为例
- 深入理解利用new创建对象的执行过程以Person p=new Person("张三",20);为例
- Person p=new Person(“zhangsan”,20);该句话都做了什么事情?
- http协议无状态中的 "状态" 到底指的是什么?!
- MVC路由中routes.IgnoreRoute("{resource}.axd/{*pathInfo}") 到底什么意思!
- java new 关键字到底做了什么?
- C#的new操作符到底做了什么
- 【紧急求教】“Person and group” 如果允许多选,数据到底存储在什么地方啊
- "数字签名"(digital signature)和"数字证书"(digital certificate)到底是什么
- new[] 到底做了什么?
- String s=new String("xyz");创建了几个String Object?二者之前的区别是什么?
- new到底做了什么?
- new到底new出了什么
- "架构"到底是个什么东西?
- 10047--http协议无状态中的 "状态" 到底指的是什么?!
- 对于String对象,可以使用"="赋值,也可以使用"new"关键字赋值,两种方式有什么区别?
- js中的new()到底做了些什么??
- new 一个对象到底做了什么?