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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ztwztw 中级黑马   /  2014-1-5 10:15  /  1379 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

静态代码块和构造代码块的区别
都放在什么位置啊

7 个回复

倒序浏览
构造代码块{}是给对象进行初始化的;静态代码块static{}是给类进行初始化的。

构造代码块各方面对象的最开始位置,静态代码块一般放在前面,但放在后面也行。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
1、静态代码块的执行:
public class StaticTest {
    static
    {
        System.out.println("hello,world!");
        System.exit(0);
    }
    public static void main(String[] args)
    {
        System.out.println("main");
    }
}

在这段代码中,StaticTest类一加载,首先就执行了static代码块,虽然这里有main函数,只是这段代码的入,通过Eclipse的断点测试,根本就没有执行到就结束了,这里的main函数就是为了让代码能够执行才有的。
2、构造代码块的执行:
public class StaticTest {
    static
    {
        System.out.println("静态代码块!");
        //System.exit(0);
    }
   
    {
      
        System.out.println("构造代码块!");
    }
   
   
    public static void main(String[] args)
    {
        StaticTest st = new StaticTest();  //在对象一建立的时候就调用
        System.out.println("主函数!");   
    }
}

在这段代码中,有一个构造代码块,这个代码块是在对象一建立的时候就调用,在函数体中,他的执行时间是看对象是什么时候建立的。
3、总结:静态代码块是在类一被加载的时候就执行,如果在静态代码块中加入System.exit(0);语句,则会直接结束这个程序,不会再执行main函数中的语句。而构造代码块则不同,因为要先建立对象,再调用代码块中的语句,所以main函数是肯定要执行的。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报 1 0
静态代码块和构造代码块都是放在类中的。只是用法不同:静态代码块是用来给类初始化的,随着类的加载就在方法区的静态区存在,而且只执行一次;构造代码块是用来给对象初始化的,有几个对象就执行几次

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
静态代码块随着类的加载而加载,只运行一次,构造代码块随着对象建立而加载,对象每建立一次就会运行一次

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
静态代码块用于给类初始化,构造代码块和构造函数是用于给对象初始化的。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
了解了,谢谢
回复 使用道具 举报
静态代码块:就是一个有静态关键字标示的一个代码块区域。定义在类中
可以完成类的初始化,随着类的加载而执行,而且只执行一次。若果和主函数在同一个类中优先于主函数执行

构造代码块:是给所有的对象进行初始化,只要对象一建立就会调用这个代码块
先执行静态代码块后执行构造代码块
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马