ゞ沉默是金ゞ
鱼离不开水,但是没有说不离开哪滴水.
BlogJava
首页
新随笔
新文章
联系
聚合
管理
posts - 98,comments - 104,trackbacks - 0
<
2009年3月
>
日
一
二
三
四
五
六
22
23
24
25
26
27
28
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
常用链接
我的随笔
我的文章
我的评论
我的参与
最新评论
留言簿
(3)
给我留言
查看公开留言
查看私人留言
随笔分类
Ant
Broker(1)
DB(8)
EJB(2)
eXtreme(7)
Hibernate
HTTP(6)
Java EE(8)
Java SE(31)
Jrules
Maven
Spring
Spring基础(1)
Struts
webservice(2)
其他收集(6)
性能测试(1)
搜索引擎
面试相关
随笔档案
2012年12月 (1)
2012年11月 (1)
2012年8月 (16)
2012年7月 (6)
2012年6月 (11)
2011年3月 (1)
2010年12月 (1)
2010年11月 (2)
2010年8月 (1)
2010年7月 (3)
2010年5月 (1)
2010年1月 (1)
2009年12月 (3)
2009年11月 (2)
2009年8月 (1)
2009年6月 (4)
2009年5月 (1)
2009年4月 (1)
2009年3月 (6)
2009年2月 (3)
2008年12月 (4)
文章分类
EJB(1)
代码收集
实用脚本
文章档案
2012年6月 (2)
2012年1月 (1)
2011年8月 (1)
2009年11月 (1)
2009年3月 (1)
2009年2月 (2)
搜索
最新评论
1. re: How to Create Client/Server Keystores using Java Keytool
Shawn?
--Freud
2. re: HTTP/1.1 Cache-Control的理解
这是网页代码,还是IIS 代码
--marmoglass
3. re: How To Avoid javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated Problem Using Apache HttpClient
评论内容较长,点击标题查看
--dashi99
4. re: How To Avoid javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated Problem Using Apache HttpClient
评论内容较长,点击标题查看
--shigangxing
5. re: Part 12: java.util.concurrent : SingleThreadPool Example
评论内容较长,点击标题查看
--NotNolyJava
阅读排行榜
1. HTTP/1.1 Cache-Control的理解(10085)
2. MYSQL 连接数据库命令收藏(8610)
3. 什么是RFC?(6595)
4. can not be represented as java.sql.Timestamp(5938)
5. How To Avoid javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated Problem Using Apache HttpClient(3623)
评论排行榜
1. Java应用基础:网友精选25个Java试题分享(18)
2. 踏实与成功(11)
3. Eclipse中10个比较有用的快捷键组合(转)(7)
4. 摘:一个Java程序员应该掌握的10项技能(6)
5. Java获取客户端真实IP地址的两种方法(5)
类的 初始化顺序
class
ClassA
{
static
{
System.out.println(
"
ClassA's static.
"
);
}
public
ClassA()
{
System.out.println(
"
ClassA's constructor.
"
);
}
}
class
ClassB
extends
ClassA
{
static
{
System.out.println(
"
ClassB's static.
"
);
}
public
ClassB()
{
System.out.println(
"
ClassB's constructor.
"
);
}
}
public
class
TestClass
{
public
static
void
main(String[] args)
{
ClassA a
=
new
ClassB();
System.out.println(
"
===============
"
);
a
=
new
ClassB();
}
}
输出:
ClassA
'
s static.
ClassB
'
s static.
ClassA
'
s constructor.
ClassB
'
s constructor.
===============
ClassA
'
s constructor.
ClassB
'
s constructor.
我个人分析如下:
当执行到ClassA a = new ClassB();时开始加载ClassB,这里因为ClassB继承ClassA,所以加载ClassA,在加载ClassA的时候执行输出:ClassA's static.。
ClassA加载完后,加载ClassB,这时执行结果为:ClassB's static.。两个类都加载完后开始构建对象。
在构建ClassB对象时,得先构建父类对象ClassA,所以执行分别为:ClassA's constructor.
ClassB's constructor.那么这句话完了。
到a=new ClassB();时,由于ClassA,ClassB已经被加载过,在内存中。所以只是简单的进行构建对象。输出:ClassA's constructor.
ClassB's constructor.
希望大家多多指教。(来源于网络)
posted on 2009-03-30 09:59
ゞ沉默是金ゞ
阅读(1253)
评论(4)
编辑
收藏
所属分类:
Java SE
FeedBack:
#
re: 类的 初始化顺序[未登录]
2009-03-30 11:17 |
kimi
类的初始化分为类加载后的初始化和类实例化后的初始化,当new一个类的时候,如果此类没有被加载到vm中,vm会先加载此类,当加载完成后vm会立即执行此类中的所有的静态初始化代码。加载完成后,vm会为实例分配内存,然后执行实例初始化代码,最后是执行构造方法返回新建对象的引用。
静态初始化代码是被static修饰的字段或静态代码段,实例初始化代码是类中声明并初始化并且没有被static修饰的字段,还有就是在类中被大括号括起来的代码段
回复
更多评论
#
re: 类的 初始化顺序
2009-03-30 12:49 |
隔叶黄莺
关键是要把握几点
1. 对象实例初始化之前要初始化类实例,它们对应字节码的方法名分别是 cinit() 和init(),类的静态块编译后会放在 cinit() 方法中,{} 括起来的非静态块会放到 init() 方法中。
2. 构造子对象实例前必须构造出父对象实例,当然在构造子类实例前必须构造父类实例。
就这么两点,这里用了类实例和对象实例。区别是,比如有个类A,分别构造了
A a1 = new A();
A a2 = new A();
A a3 = new A();
三个是对象实例,但是只要同一个类加载器加载的,那么
a1.getClass()和a2.getClass(),a3.getClass() 就是同一个实例,叫做它们的类实例。
这里只简单的说了是由同一个类加载器加的,如果延展开来就会比较复杂。根据类加载器的委托机制和可见性原则还会有不同的情况。
回复
更多评论
#
re: 类的 初始化顺序[未登录]
2009-03-30 13:02 |
新手上路
@隔叶黄莺
这个没有看懂。。。。
回复
更多评论
#
re: 类的 初始化顺序
2009-03-30 14:06 |
ゞ沉默是金ゞ
@kimi
@隔叶黄莺
谢谢关注...
回复
更多评论
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
jvm学习笔记
ThreadPoolExecutor usage summary
Part 13: java.util.concurrent - Atomic Variables
Part 12: java.util.concurrent : SingleThreadPool Example
Part 11: java.util.concurrent - CachedThreadPool Example
Part 10: java.util.concurrent - ScheduledThreadPool Example
Part 9: java.util.concurrent : FixedThreadPool Example
Part 8: java.util.concurrent - "Executors" Factory Threads Pool
Part 7: java.util.concurrent - invokeAll via ExecutorService
Part 6: java.util.concurrent - Lock and Condition Object