说说Java中的实例初始化器
来源:互联网 发布:数码兽网络侦探攻略 编辑:程序博客网 时间:2024/05/23 00:08
说说Java中的实例初始化器
先看看下面这段代码,你觉着哪部分会先被执行呢?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public
class
Foo {
//instance variable initializer 实例变量初始化器
String s =
"abc"
;
//constructor 构造函数
public
Foo() {
System.out.println(
"constructor called"
);
}
//static initializer 静态初始化器
static
{
System.out.println(
"static initializer called"
);
}
//instance initializer 实例变量初始化器
{
System.out.println(
"instance initializer called"
);
}
public
static
void
main(String[] args) {
new
Foo();
new
Foo();
}
}
输出如下:
1
2
3
4
5
static initializer called
instance initializer called
constructor called
instance initializer called
constructor called
2. Java的实例初始化器是如何工作的?
上面的例子中的实例初始化器包含一段打印字符的代码。要理解它是如何工作的,我们可以把它想象成变量赋值的过程,这样就不难理解了。
除了这么赋值:
1
int
b =
0
;
还可以这么写:
1
2
int
b;
b =
0
;
因此,实例初始化器和实例变量初始化器就大同小异了。
3. 什么时候会用到实例初始化器?
能用到实力初始化器的时候比较少。但有些时候还是一个实例变量初始化器的替代选择,比如:
- 初始化代码必须处理异常情况
- 执行一个实例变量没办法进行的计算
当然,这些需求还是可以在构造函数中实现的。但是一个类有多个构造函数的话,你就得在每个构造函数里面重复同样的代码了。
写在实例初始化器中的代码,无论你使用哪一个构造函数,实例初始化器中代码都会被执行(可能说的多,用的少吧)。
另一个实例初始化器的应用场景是匿名内部类,因为这种情况下根本就不能创建构造函数。(这可能是放置日志代码的好地方?)
0 0
- 说说Java中的实例初始化器
- java中的实例初始化
- java中的实例初始化
- 来说说 Java 中的实例初始化器
- 简易Java(17):Java中的实例初始化器是什么?
- java语言中的初始化和实例化
- 说说Java中的接口
- 说说Java中的static
- 说说 java中的接口
- 说说Java中的枚举
- 初始化中的kmem_cache 实例
- java中的构造器初始化
- java中的构造器初始化
- 我说说java中的多线程
- java中使用实例变量初始化器
- java中初始化,实例化,构造器
- Java实例初始化详解
- java实例变量初始化
- 运用Eclipse 的Jetty插件直接部署
- 总结一下最近学到的编写文档的工具和语法
- hadoop安全机制
- 【Java】【Fulme】Flume-NG源码阅读之SpoolDirectorySource
- Ibatis动态(dynamic)查询
- 说说Java中的实例初始化器
- 法律导论
- 基于jenkins的增量发布
- 修改LoadRunner自带的示例程序端口号
- 如何判断文件有没有读取到尾部
- Android关机代码
- Android 通知栏Notification的整合全面学习
- Socket 与 WebSocket
- Matlab中的彩色图及colormap