浏览 1610 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-05-13
最后修改:2012-05-13
加载:查找并加载类的二进制数据(加载到内存中) 连接 验证:确保被加载的类的正确性 准备:为类的静态变量分配内存,并将其初始化为默认值 解析:把类中的符号引用转换为直接引用 初始化:为类的静态变量赋予正确的初始值(用户赋予的值) 下面看一个例子: package com.naxsu.jvm; class Singleton { // private static Singleton singleton=new Singleton();//放在前面,输出1和0 public static int count1; public static int count2 = 0; private static Singleton singleton=new Singleton();//放在后面,输出1和1 private Singleton() { count1++; count2++; } public static Singleton getInstance(){ return singleton; } } public class MyTest { public static void main(String[] args) throws ClassNotFoundException { Singleton singleton= Singleton.getInstance(); System.out.println(singleton.count1); System.out.println(singleton.count2); } } 我们来分析一下这个类的运行过程: 1. Singleton类的二进制数据被加载到内存中。 2. 验证类的正确性 3. 为count1,count2为配内存,为都赋予默认值0,singleton =null 4. 放在前面那种情况,singleton =new Singleton(),count1和count2都为1,然后给静态变量赋予正确的初始值,这里用户给count2初始化的值是0,所以最后输出是1和0 给静态变量赋予正确的初始值,这里用户给count2初始化的值是0,singleton =new Singleton(),count1和count2都为1,所以最后输出是1和1 转载请注明出处:http://bbs.naxsu.com/forum.php?mod=viewthread&tid=24 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |