黑马程序员技术交流社区

标题: 构造代码块和静态代码块的区别??? [打印本页]

作者: Spring up    时间: 2012-11-29 12:30
标题: 构造代码块和静态代码块的区别???
求高人详细解释:构造代码块和静态代码块的区别?具体怎么用?(谢谢解答,由于自己家没联网,在网吧提的问题,不能及时回复,希望谅解,我会认真对待大家对我的帮助!)
作者: 何伟    时间: 2012-11-29 12:49
本帖最后由 何伟 于 2012-11-29 12:51 编辑

这个毕老师说过。静态代码块是随着类的加载而加载,而且仅执行一次
构造方法和静态代码块的区别在于,静态代码块 仅当第一次执行的时候才执行,一般用于初始化。
而构造方法 是每次new一个对象的时候都能执行,也是初始化
二者的区别在于 一个是仅执行一次 另一个是每次new对象的时候执行
所以初始化代码 写在那个部分里就要根据具体情况而进行选择

作者: 黑马_郑亮新    时间: 2012-11-29 13:05
JAVA静态代码块执行过程 以及和构造方法的区别当父类与子类都有静态代码块和构造函数的时候,执行顺序如下:
父类静态代码块 > 子类静态代码块

父类构造函数 > 子类构造函数(先有父亲,后有孩子)

如果是多级继承关系的话,最高层的父类首先执行,然后依次递减

总结:静态优先执行,父类优先执行
注意:静态代码块是在JVM加载类的时候执行的,而且静态代码块执行且仅执行一次


构造方法和静态代码块的区别

静态代码块 当且仅当第一次执行的时候才执行,一般用于初始化。
而构造方法 是每次new对象的时候都执行,也是初始化
二者的区别在于 一个是仅执行一次 另一个是每次new对象的时候执行
所以初始化代码 写在那个部分里就要根据具体情况而进行选择

作者: 陈山    时间: 2012-11-29 19:14
本帖最后由 陈山 于 2012-11-29 19:20 编辑

构造代码块用于给对象初始化的,只要建立对象该部分就会被执行。

静态代码块是随着类的加载而执行,并且只加载一次,主要用于给类初始化。

创建对象时,静态代码块优先于构造代码块执行。

例如:
public class A{
       public static void main(String [] args){
          new StaticCode();
  
       }
}

class StaticCode{
       {
              System.out.println("构造代码块");
   
       }
       static{
          System.out.println("静态代码块");
      }
  
}

打印结果如下:
静态代码块
构造代码块

作者: 张其辉    时间: 2012-11-29 22:40
{主体部分}:构造代码块,可以给所有的对象进行初始化,你只要new了,就会执行构造代码块。
static{主体部分}:静态代码块,随着类的加载而执行,并且只运行一次,不管静态代码块在哪,只要有类就会执行。




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