Posted on 2012-05-13 23:18
领悟书生 阅读(138)
评论(0) 编辑 收藏
类开始加载到运行要经过以下几个步骤:加载:查找并加载类的二进制数据(加载到内存中) 连接 验证:确保被加载的类的正确性 准备:为类的静态变量分配内存,并将其初始化为默认值 解析:把类中的符号引用转换为直接引用 初始化:为类的静态变量赋予正确的初始值(用户赋予的值) 下面看一个例子: 1 package com.naxsu.jvm;
2 class Singleton {
3 // private static Singleton singleton=new Singleton();//放在前面,输出1和0
4 public static int count1;
5 public static int count2 = 0;
6 private static Singleton singleton=new Singleton();//放在后面,输出1和1
7
8 private Singleton() {
9 count1++;
10 count2++;
11 }
12
13 public static Singleton getInstance(){
14 return singleton;
15 }
16
17 }
18
19 public class MyTest {
20 public static void main(String[] args) throws ClassNotFoundException {
21 Singleton singleton= Singleton.getInstance();
22 System.out.println(singleton.count1);
23 System.out.println(singleton.count2);
24 }
25 }
我们来分析一下这个类的运行过程:
1. Singleton类的二进制数据被加载到内存中。
2. 验证类的正确性
3. 为count1,count2为配内存,为都赋予默认值0,singleton =null
4.
l 放在前面那种情况,singleton =new Singleton(),count1和count2都为1,然后给静态变量赋予正确的初始值,这里用户给count2初始化的值是0,所以最后输出是1和0
l 给静态变量赋予正确的初始值,这里用户给count2初始化的值是0,singleton =new Singleton(),count1和count2都为1,所以最后输出是1和1
更多资源请访问:
http://bbs.naxsu.com