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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© crazylong 中级黑马   /  2014-6-10 08:36  /  1272 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


局部代码块  静态代码块 和构造代码块 能同时存在吗 如果存在优先级是什么顺序

4 个回复

倒序浏览
是可以同时存在的。
运行一个类具体的顺序是这样的:
1.将类.class文件加载进内存
2.执行该类的静态代码块,给类.classj进行初始化。
3.在堆内存中开辟空间,分配内存地址。
4.在堆内存中建立对象的特有属性,并进行默认初始化。
5.对对象进行显示初始化。
6.对对象进行 构造代码块初始化。
7.对对象进行构造函数初始化。
8.将内存地址赋给栈内存中的类变量。

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
静态代码块>构造代码块>局部代码块
回复 使用道具 举报
局部代码块 、 静态代码块 和构造代码块是可以同时存在的。它们的功能是不同的:
局部代码块是对局部变量生命周期的控制, 避免内存的浪费
静态代码块是用于对类进行初始化。
构造代码块是对对象进行初始化,在构造函数重载时,对不同对象进行不同初始化时,抽取对象共同内容封装成构造代码块,对所有对象进行初始化。
从功能可以看出随着类文件.class的加载,静态代码块就会运行对类进行初始化,之后“如果”创建对象,在通过构造函数初始化之前,会通过构造代码块初始化。至于局部代码块,只有在调用它所在方法时,才会执行。
回复 使用道具 举报
学习了,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马