黑马程序员技术交流社区
标题: 黑马程序员—构造代码块、构造函数和静态代码块它们之..... [打印本页]
作者: 萍水相逢 时间: 2014-8-4 18:37
标题: 黑马程序员—构造代码块、构造函数和静态代码块它们之.....
本帖最后由 萍水相逢 于 2014-8-4 18:37 编辑
------- <a target="blank">android培训</a>、<a target="blank">java培训</a>、期待与您交流! ----------
构造代码块:
{
System.out.println("构造代码块执行!");
}
作用:给对象进行初始化。
对象一建立就运行,而且优先于构造函数执行。
它和构造函数的区别:
构造代码块是给所有对象进行统一初始化。而构造函数是给对应的对象初始化。
构造代码块中定义的是不同对象共性的初始化内容。
静态代码块:
格式:static
{
静态代码块中的执行语句。
}
特点:随着类的加载而执行,只执行一次。
用于给类进行初始化的。
代码:
- class Test {
- // 构造函数
- Test() {
- System.out.println("b");
- }
- // 静态代码块
- static {
- System.out.println("a");
- }
- // 构造代码块
- {
- System.out.println("c");
- }
- }
- class TestDemo {
- public static void main(String[] args) {
- Test t = new Test();
- }
- }
复制代码 执行结果是:a c b
作者: bbdeyouxang 时间: 2014-8-4 21:47
三者的执行顺序还真没有注意过,受教了
作者: 贾浩田 时间: 2014-8-5 10:02
分析的很不错,收藏了
作者: yqj 时间: 2014-8-6 19:58
本帖最后由 yqj 于 2014-8-6 20:03 编辑
以前也没注意到,学习了
换成这样可能会更说明问题
- class Test {
- // 构造函数
- Test() {
- System.out.println("b");
- }
- // 构造代码块
- {
- System.out.println("c");
- }
- // 静态代码块
- static {
- System.out.println("a");
- }
- }
- public class TestDemo {
- public static void main(String[] args) throws Exception {
- Class.forName(Testtt.class.getName()); //加载类
- System.out.println("-------------");
- Test t = new Test();
- System.out.println("-------------");
- Test t2 = new Test();
- }
- }
复制代码
结果:
a
-------------
c
b
-------------
c
b
作者: 萍水相逢 时间: 2014-8-6 22:11
嗯,都差不多的
作者: Vaz 时间: 2014-8-6 22:22
我看过老毕的。
作者: 萍水相逢 时间: 2014-8-7 08:36
嗯,这就是总结他那上面的
作者: 王石 时间: 2014-8-7 08:46
好像是先执行静态代码块 , 在看看构造函数有没有属性 有成员属性就先初始化,没有就先执行构造代码块 仅供参考
作者: iefegend 时间: 2014-8-16 09:53
黑马的视频中也有哦,,好像很全面的哦,,:)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |