初始化块
2016-05-15 21:12
316 查看
在一个类中没有名字,没有标识表示的语句块叫初始化块,而用static修饰的初始化块叫静态初始化块,他门的基本形式如下:
public class A
{
static{//静态初始化块
......
}
{//初始化块
......
}
}
一个类中能有多个初始化块,而先定义的(静态)初始化块先执行,后定义的(静态)初始化块后执行,静态初始化块总是比初始化块先执行,而且子类中的静态初始化块会比父类的初始化块先执行;一个类中的初始化块比这个类中的中的构造器先执行。eg:
A类的静态初始化块
B类的静态初始化块
第一次创建Run对象:
A类的初始化块
A类的构造器
B类的初始化块
B类的构造器
Run: a = 2
b = 2
第二次创建Run对象:
A类的初始化块
A类的构造器
B类的初始化块
B类的构造器
Run: a = 2
b = 2
从上面的程序可以看出在没有创建Run对象时,静态初始化块依然执行了,而且第二次创建Run对象时,是没有执行静态初始化块的,这是因为静态初始化块是与类相关的,是对类进行初始化处理,与创没创建对象无关,而初始化块是与实例相关的,是对实例进行初始胡处理,必须先创建对象。
public class A
{
static{//静态初始化块
......
}
{//初始化块
......
}
}
一个类中能有多个初始化块,而先定义的(静态)初始化块先执行,后定义的(静态)初始化块后执行,静态初始化块总是比初始化块先执行,而且子类中的静态初始化块会比父类的初始化块先执行;一个类中的初始化块比这个类中的中的构造器先执行。eg:
class A { static{ System.out.println("A类的静态初始化块"); } { System.out.println("A类的初始化块"); } public A() { System.out.println("A类的构造器"); } }
class B extends A{ { System.out.println("B类的初始化块"); } static{ System.out.println("B类的静态初始化块"); } public B() { System.out.println("B类的构造器"); } }
public class Run extends B { int a = 1; { a = 2; b = 1; } int b = 2; public Run() { System.out.println("Run:\ta = " + a + "\tb = " + b); } public static void main(String[] args) { System.out.println("第一次创建Run对象:"); new Run(); System.out.println(""); System.out.println("第二次创建Run对象:"); new Run(); } }运行结果为:
A类的静态初始化块
B类的静态初始化块
第一次创建Run对象:
A类的初始化块
A类的构造器
B类的初始化块
B类的构造器
Run: a = 2
b = 2
第二次创建Run对象:
A类的初始化块
A类的构造器
B类的初始化块
B类的构造器
Run: a = 2
b = 2
从上面的程序可以看出在没有创建Run对象时,静态初始化块依然执行了,而且第二次创建Run对象时,是没有执行静态初始化块的,这是因为静态初始化块是与类相关的,是对类进行初始化处理,与创没创建对象无关,而初始化块是与实例相关的,是对实例进行初始胡处理,必须先创建对象。
相关文章推荐
- [JAVA][RCP] Eclipse4/RCP/Lifecycle
- 学习进度表第十一周
- jdbc在mysql下一次执行多条sql脚本
- 用R语言做正态分布检验
- struts2学习笔记
- struts2学习笔记
- ant无法构建源码包含中文的项目--KeyWord:ant,中文,乱码
- (hzau)华中农业大学第四届程序设计大赛网络同步赛 G: Array C
- Android退出程序的两种方式killProcess()和System.exit()
- CS231n笔记6--Convolution与Pooling
- leetcode 191 Number of 1 Bits C++
- 轻松完成excel读写操作- 基于POI的框架BingExcel的使用(2)
- 大数据基础(二)hadoop, mave, hbase, hive, sqoop在ubuntu 14.04.04下的安装和sqoop与hdfs,hive,mysql导入导出
- 360开源的类Redis存储系统:Pika
- cocos2dx lua 热更新
- 去掉文本框中的空格
- JAVA中使用FTPClient实现文件上传下载
- hdu 1546(最短路)
- TestNg入门教程
- HashMap根据value排序