A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ︶喂〆快到碗里 中级黑马   /  2014-8-25 14:34  /  1331 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ︶喂〆快到碗里 于 2014-8-26 23:43 编辑

请问一下,对象在创建的时候,如果该类中有静态成员变量和静态代码块和静态方法,他们的创建过程是先什么后什么呢?有点晕了!

评分

参与人数 1黑马币 +5 收起 理由
格子、 + 5 多认真看视频吧,毕老师这些都有讲.

查看全部评分

6 个回复

倒序浏览
首先,一个类加载进内存,然后是静态代码为对象进行块初始化,之后在内存中开辟空间分配地址,接着在堆内存中建立对象实体并默认初始化。然后是对对象的显示初始化,再然后是构造代码块初始化,最后是对应的构造函数初始化。把地址给栈中的变量,让它指向这个实体对象,完成对象建立。

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 很给力!

查看全部评分

回复 使用道具 举报 1 0
付剑翊 来自手机 中级黑马 2014-8-25 22:27:30
藤椅
对象首次创建的时候该对象dui
回复 使用道具 举报
付剑翊 来自手机 中级黑马 2014-8-25 22:33:58
板凳
付剑翊 发表于 2014-8-25 22:27
对象首次创建的时候该对象dui

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

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

谢谢!!!!
回复 使用道具 举报
静态优先,子类静态优先父类静态     子类默认初始化后  跳到父类执行     父类显示初始化  父类构造代码块  父类构造函数,返回子类显示初始化  子类构造代码块 子类构造函数。  


没图配合不知道能不能理解额
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马