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

© 刘奇 初级黑马   /  2012-7-25 15:06  /  2653 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

究竟什么是初始化块区域呢?一定要加上{}吗,如果只有一条赋值语句,也算是一个初始化快吗?

5 个回复

倒序浏览
所谓初始化语块就是在一个类中对实变量作初始化的语块。他在构造对象时执行而且在构造器之前执行。
初始化语块的作用:
类体中只能定义实例变量和方法,不能直接写其它任何功能性的语句,赋值语句也不行(定义实例变量时显示初始化除外),
但因为可以有初始化块,所以可以在初始化块中写入功能性语句,通常这样的语句是用来在初始化的时候起一些作用。
另外Java中还有静态初始化块,即被static修饰的初始化块,用来对静态变量进行初始化。静态初始化块在类第一次加载时执行,而且只执行一次。

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
其实初始化块就是构造器的补充,初始化块是不能接收任何参数的。可以在里面定义一些所有对象共有的属性、方法
Java初始化块有两种,一种是静态初始化块,另一种是非静态初始化块
静态初始化块:用static定义,当类装载到系统时执行一次
非静态初始化块:在每个对象生成时都会被执行一次,可以初始化类的实例变量
非静态初始化块会在构造函数主体代码执行之前被运行,括号里的是初始化块(所以必须有括号),里面的代码在创建java对象时执行,而且在构造器之前执行
回复 使用道具 举报
本帖最后由 姬仁贵 于 2012-7-26 06:46 编辑

在Java中,有两种初始化块:静态初始化块和非静态初始化块.

静态初始化块:使用static定义,当类装载到系统时执行一次.若在静态初始化块中想初始化变量,那仅能初始化类变量,即static修饰的数据成员.

非静态初始化块:在每个对象生成时都会被执行一次,可以初始化类的实例变量.

非静态初始化块会在构造函数执行时,且在构造函数主体代码执行之前被运行.
括号里的是初始化块,这里面的代码在创建java对象时执行,而且在构造器之前执行!

其实初始化块就是构造器的补充,初始化块是不能接收任何参数的,定义的一些所有对象共有的属性、方法等内容时就可以用初始化块了初始化!!


初始化块与构造方法的作用很相似,他们都用于对Java对象执行指定的初始化块操作,但两者之间仍然存在着差异。具体差异在于:初始化块是一段固定的执行代码,他不能接收任何参数,因此初始化块对同一个类内的属性所进行的初始化处理完全相同;如果多个构造方法里有相同的初始化块,这些初始化代码无需接受参数,那就可以把他们放在初始化中定义。通过把多个构造方法中相同的代码提取到初始化块中定义,能更好的提高初始化块的复用,提高应用的可维护性
与构造方法类似,创建一个Java对象时,不仅会执行该类的初始化块和构造方法,系统还会一直追溯到java.lang.Object类,先执行java.lang.Object类的初始化块,执行java.lang.Object的构造方法,然后依次向下执行父类的初始化块,执行其父类的构造方法….最后才执行给类的初始化块和构造方法,返回该类的对象
如果希望类加载后对整个类执行某些初始化操作,则需要使用static关键字来修饰初始化块,使用static修饰的初始化块呗称为静态初始化块,静态初始化块是类相关的,静态初始化块必普通初始化块先执行
回复 使用道具 举报
初始化块就是一组一并初始化的代码,分为静态的的非静态的。就像楼上那哥们说的 就是构造器的补充
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马