黑马程序员技术交流社区

标题: 关于静态代码块的作用 [打印本页]

作者: 黑马潘浩    时间: 2013-3-7 15:00
标题: 关于静态代码块的作用
本帖最后由 黑马潘浩 于 2013-3-10 11:03 编辑

在Java中,在类中定义一个静态代码块一般起到什么样的作用,还有在类中的特点,在实际开发中运用的多吗?

作者: 黑马_位志国    时间: 2013-3-7 15:08
一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用

对象的初始化顺序:首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容,当子类的静态内容执行完毕之后,再去看父类有没有非静态代码块,如果有就执行父类的非静态代码块,父类的非静态代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕之后,它接着去看子类有没有非静态代码块,如果有就执行子类的非静态代码块。子类的非静态代码块执行完毕再去执行子类的构造方法。总之一句话,静态代码块内容先执行,接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法。
作者: scott0610    时间: 2013-3-7 15:09
静态代码块的作用主要是:类变量的初始化。一个类最先执行的就是静态代码块。
在类中的特点:主要就是执行顺序优先,其他没什么特点吧。
在实际开发中运用不是太多。
作者: 黑马斯巴达    时间: 2013-3-7 15:10
再类中定义一个静态代码块可以在项目启动时就执行,一些类在这时就可以直接调用它,因为在类加载之前,静态代码快就已经加载啦
作者: 张卫刚    时间: 2013-3-7 15:15
静态代码块的作用主要是:类变量的初始化
执行顺序:静态代码块优先于构造代码块,构造代码块优先于构造方法

在实际开发中运用的不多,视开发需要而定
作者: 邹学良    时间: 2013-3-7 15:15
本帖最后由 邹学良 于 2013-3-7 15:25 编辑

在JAVA中  非普通代码块共有三类:
第一个是局部代码块,它的作用是为了控制变量的生命周期,如我们在程序中已经使用完 某个变量x 后,并且在接下来的代码中,不会再用到x,那么就没必要让x 在内存中占用空间了,这用情况下,可以使用局部代码块,将x及其所设计到的区域封装为局部代码块,他们在程序执行中顺序不变,只是在执行完成后消失。

第二个是构造代码块,它的作用是它可以给所有对象进行初始化存在于类中。当类中的构造方法以重载的形式存在时,并且有共同成员变量或共同的方法时,可以通过构造代码块对其进行初始化,这样可以减少代码的重复。

第三个是静态代码块:它的特征是随着类的加载而执行,而且只一次,且优先于主函数执行。它的作用是给类进行初始化。当类中的方法都被静态了化,并且构造方法被private了,这是我们不能在将这个类实例化,然而又想让类增加一些属性,就可以使用静态代码块
例如:
  1. class StaticCode  {  
  2.     static   
  3.     {  
  4.        System.out.println("A");  
  5.    }  
  6.    public void show()  {  
  7.       System.out.println("Hello World !");  
  8.    }  
  9. }  
  10. class StaticCodeDemo  {  
  11.     static   
  12.    {  
  13.       System.out.println("B");  
  14.   }  
  15.   public static void main(String[] args)  {  
  16.        new StaticCode().show();  
  17.   }  
  18.    static  
  19.    {  
  20.      System.out.println("C");
  21.   }  
  22. }  
复制代码

作者: amen0205    时间: 2013-3-8 02:51
1   静态代码块是给类初始化的  2  在类加载进内存后即执行静态代码块   3  只执行一次    在实际开发中?   我没开发过呢  不过应该用的不多吧




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