eric-1001c
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
3 随笔 :: 45 文章 :: 12 评论 :: 0 Trackbacks
<
2024年12月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
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
26
27
28
29
30
31
1
2
3
4
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(2)
给我留言
查看公开留言
查看私人留言
随笔分类
Design Pattern(1)
(rss)
UML
(rss)
互联网商业意识(2)
(rss)
随笔档案
2009年10月 (1)
2008年2月 (1)
2008年1月 (1)
文章分类
Agile(1)
(rss)
Hibernate(14)
(rss)
JavaScript(2)
(rss)
JBPM(4)
(rss)
LDAP(1)
(rss)
ThinkingInJava(6)
(rss)
UML(1)
(rss)
Web(1)
(rss)
Websphere Portal(4)
(rss)
编程技巧(1)
(rss)
文章档案
2009年10月 (3)
2008年8月 (2)
2008年7月 (3)
2008年6月 (2)
2008年5月 (1)
2008年4月 (3)
2008年3月 (8)
2008年2月 (6)
2008年1月 (7)
2007年7月 (6)
搜索
最新评论
1. re: if/else的使用心得
想请问“使用Joshua Bloch在《effective java》中介绍的方法”,在effiective java中在哪一条,我没找到,谢谢!
--Carter
2. re: 接口之完全解耦[未登录]
如果可以解释下直接QQ我吧 120482338 多谢哈
--王杰
3. re: 接口之完全解耦[未登录]
评论内容较长,点击标题查看
--王杰
4. re: Request的getParameter和getAttribute方法的区别[未登录]
第一次有这样深刻的理解,谢谢牛人
--long
5. re: Request的getParameter和getAttribute方法的区别
受教了!
--yxc
阅读排行榜
1. FlyWeight Design Pattern(享元模式)(转)(458)
2. 摩尔定律其实是个魔咒(415)
3. Web2.0企业生态系统(290)
评论排行榜
1. FlyWeight Design Pattern(享元模式)(转)(1)
2. 摩尔定律其实是个魔咒(0)
3. Web2.0企业生态系统(0)
第五章 初始化与清理
1)类成员的初始化
class
Bowl
{
Bowl(
int
marker)
{
System.out.println(
"
Bowl(
"
+
marker
+
"
)
"
);
}
void
f1(
int
marker)
{
System.out.println(
"
f1(
"
+
marker
+
"
)
"
);
}
}
//
检查static成员位置与被调用的顺序的关系
class
Table
{
static
Bowl bowl1
=
new
Bowl(
1
);
//
before constructor
Table()
{
System.out.println(
"
Table()
"
);
bowl2.f1(
1
);
}
void
f2(
int
marker)
{
System.out.println(
"
f2(
"
+
marker
+
"
)
"
);
}
static
Bowl bowl2
=
new
Bowl(
2
);
//
after constructor
}
//
检查static和normal成员位置与被调用的顺序关系
class
Cupboard
{
Bowl bowl3
=
new
Bowl(
3
);
//
normal field
static
Bowl bowl4
=
new
Bowl(
4
);
//
static field
Cupboard()
{
System.out.println(
"
cupboard()
"
);
bowl4.f1(
2
);
}
void
f3(
int
marker)
{
System.out.println(
"
f3(
"
+
marker
+
"
)
"
);
}
static
Bowl bowl5
=
new
Bowl(
5
);
//
after constructor
}
//
检查static与main函数之间被调用顺序的关系
public
class
ClassInitialization
{
public
static
void
main(String[] args)
{
System.out.println(
"
Creating new Cupboard() in main
"
);
new
Cupboard();
System.out.println(
"
Creating new Cupboard()in main
"
);
new
Cupboard();
table.f2(
1
);
cupboard.f3(
1
);
}
static
Table table
=
new
Table();
static
Cupboard cupboard
=
new
Cupboard();
}
//output
Bowl(1)
Bowl(2)
Table()
f1(1)
Bowl(4)
Bowl(5)
Bowl(3)
cupboard()
f1(2)
Creating new Cupboard() in main
Bowl(3)
cupboard()
f1(2)
Creating new Cupboard()in main
Bowl(3)
cupboard()
f1(2)
f2(1)
f3(1)
1. 当首次构建ClassInitialization的对象时(构造器也看成静态方法),或者类的静态方法/静态域首次被访问时,Java解释器必须查找类路径,以定位ClassInitialization.class
2. 然后载入class文件,有关静态的初始化都会被执行,而且只能在首次加载的时候进行一次。在例子中由于静态成员Cupboard已经加载了bowl4和bowl5,因此在重新new Cupboard的时候只有Bowl3被加载
3. 静态的初始化顺序是按出现顺序执行的,因此在例子输出结果中Bowl(1)在Bowl(2)之前,Bowl(4)在Bowl(5)之前
4. 当用new 创建对象的时候,首先将在堆上为对象分配足够的存储空间
5. 这块存储空间会被清零,即自动地把对象中的所有基本类型数据都设置成了默认值,而引用则被设置成了null。例子中的bowl3会先被设置成null(也就是说非static的成员初始化都是在static之后的,因此Bowl(3)在Bowl(4)和Bowl(5)之后)
6. 编译器会检查该类是不是extends于基类,如果是则载入基类。到了基类后,加载顺序和1-7一样
7. 执行所有出现于字段定义处的初始化动作。例中bowl3被赋予指向Bowl3对象的引用
8. 执行构造器。
posted on 2007-07-11 16:07
Eric-1001c
阅读(169)
评论(0)
编辑
收藏
所属分类:
ThinkingInJava
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
相关文章:
第十章 内部类
接口之完全解耦
第五章 初始化与清理
第八章 多态
第二章 一切都是对象
第七章 复用类
Powered by:
BlogJava
Copyright © Eric-1001c