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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马潘浩 中级黑马   /  2013-3-7 15:00  /  3176 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马潘浩 于 2013-3-10 11:03 编辑

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

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 鼓励鼓励

查看全部评分

7 个回复

倒序浏览
一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用

对象的初始化顺序:首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容,当子类的静态内容执行完毕之后,再去看父类有没有非静态代码块,如果有就执行父类的非静态代码块,父类的非静态代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕之后,它接着去看子类有没有非静态代码块,如果有就执行子类的非静态代码块。子类的非静态代码块执行完毕再去执行子类的构造方法。总之一句话,静态代码块内容先执行,接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

回复 使用道具 举报
静态代码块的作用主要是:类变量的初始化。一个类最先执行的就是静态代码块。
在类中的特点:主要就是执行顺序优先,其他没什么特点吧。
在实际开发中运用不是太多。
回复 使用道具 举报
再类中定义一个静态代码块可以在项目启动时就执行,一些类在这时就可以直接调用它,因为在类加载之前,静态代码快就已经加载啦
回复 使用道具 举报
静态代码块的作用主要是:类变量的初始化
执行顺序:静态代码块优先于构造代码块,构造代码块优先于构造方法

在实际开发中运用的不多,视开发需要而定
回复 使用道具 举报
本帖最后由 邹学良 于 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. }  
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

回复 使用道具 举报
1   静态代码块是给类初始化的  2  在类加载进内存后即执行静态代码块   3  只执行一次    在实际开发中?   我没开发过呢  不过应该用的不多吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马