黑马程序员技术交流社区

标题: 创建对象实力的过程顺序 [打印本页]

作者: ︶喂〆快到碗里    时间: 2014-8-25 14:34
标题: 创建对象实力的过程顺序
本帖最后由 ︶喂〆快到碗里 于 2014-8-26 23:43 编辑

请问一下,对象在创建的时候,如果该类中有静态成员变量和静态代码块和静态方法,他们的创建过程是先什么后什么呢?有点晕了!
作者: 文盲庄稼汉    时间: 2014-8-25 22:09
首先,一个类加载进内存,然后是静态代码为对象进行块初始化,之后在内存中开辟空间分配地址,接着在堆内存中建立对象实体并默认初始化。然后是对对象的显示初始化,再然后是构造代码块初始化,最后是对应的构造函数初始化。把地址给栈中的变量,让它指向这个实体对象,完成对象建立。
作者: 付剑翊    时间: 2014-8-25 22:27
对象首次创建的时候该对象dui
作者: 付剑翊    时间: 2014-8-25 22:33
付剑翊 发表于 2014-8-25 22:27
对象首次创建的时候该对象dui

失误,没写完就发了,重写一遍。
对象首次创建的时候,该类会被JAVA虚拟机加载进内存,然后执行静态代码块对类中的静态变量进行初始化,静态方法在调用之前已经被加载到方法区的静态区,在使用类名调用的时候才会被执行。
作者: ︶喂〆快到碗里    时间: 2014-8-25 23:17
文盲庄稼汉 发表于 2014-8-25 22:09
首先,一个类加载进内存,然后是静态代码为对象进行块初始化,之后在内存中开辟空间分配地址,接着在堆内存 ...

谢谢!我弄明白了!先默认初始化>>>显示初始化(有静态成员变量,先执行静态)>>>构造代码块(有静态构造代码块,先执行静态!) >>>构造函数     !总之:就是这个顺序!有静态的话就先执行静态!
          
          
作者: ︶喂〆快到碗里    时间: 2014-8-25 23:18
文盲庄稼汉 发表于 2014-8-25 22:09
首先,一个类加载进内存,然后是静态代码为对象进行块初始化,之后在内存中开辟空间分配地址,接着在堆内存 ...

谢谢!!!!
作者: 谢建平    时间: 2014-8-27 05:55
静态优先,子类静态优先父类静态     子类默认初始化后  跳到父类执行     父类显示初始化  父类构造代码块  父类构造函数,返回子类显示初始化  子类构造代码块 子类构造函数。  


没图配合不知道能不能理解额




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2