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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

亲们,帮我解释下,
构造代码块,和静态代码块的区别,和书写位置,以及何时使用这两种代码块??
感激不尽!!

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1 去26/27板块提问吧

查看全部评分

8 个回复

正序浏览
构造代码块的作用是给对象进行初始化,对象一建立就执行,而且优先于构造函数执行,构造代码块是给所有不同对象的共性进行统一初始化
而静态代码块它只执行一次,它比main还先执行,执行顺序是静态代码块--构造代码块--构造方法
回复 使用道具 举报
两个都是放在类中就行了,你想如果是放在构造函数里,对于有构造函数重载的类,岂不是要将构造代码块在每个构造函数中都放一份,才能保证对象的共性进行相同的初始化,至于静态代码块,有静态两个字就说明与具体对象无关,优先于对象而存在,与类相关,肯定是放在类中了。只有当静态代码块中访问了类中的静态成员或这是方法,这时才要求静态代码块要放在其它静态的前面,因为程序是按照顺序执行的,静态成员和静态方法先执行,才能保证静态代码块能够调用。

点评

O ,这样啊,谢谢!!  发表于 2013-10-13 10:47
回复 使用道具 举报
可以这样理解:静态构造代码块对了类的初始化,既然是对类的初始化所以是在类加载时执行,又由于类在jvm中是以唯一的类的.class的字节码文件形式存在的,所以仅执行一次。
构造代码块主要是对类的对象的共性进行初始化,所以每创建一次对象就要调用一次构造代码块的代码,使得类的所有对象有相同的初始化属性。
举例:车的图纸是类,生产出来的每辆车是类的对象。静态代码块可以理解为是对图纸的初始化(规定图纸的各个参数等)构造代码块是对所有生产的车进行初始化(比如初始化车刹车方向盘等)。
这是我的理解,希望对你有用。

点评

恩,擦不多了,可是位置呢?是不是构造代码块要放在构造函数里面?而静态代码块应放在类里?还有静态代码块是放在构造函数上面还是下面?  发表于 2013-10-12 22:16

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
hyz123456 发表于 2013-10-12 17:28
静态代码块是在类加载的时候就执行的,并且只执行一次,所以可以用来给本类初始化
构造代码块优先于构造函 ...

位置呢?应该如何放呢?
回复 使用道具 举报
hyz123456 发表于 2013-10-12 17:28
静态代码块是在类加载的时候就执行的,并且只执行一次,所以可以用来给本类初始化
构造代码块优先于构造函 ...

位置呢?应该如何放呢?
回复 使用道具 举报
静态代码块是在类加载的时候就执行的,并且只执行一次,所以可以用来给本类初始化
构造代码块优先于构造函数执行,每个构造函数执行时会先执行一次构造代码块,可以用来给构造函数初始化定义!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马