首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

深入懂得java虚拟机系列文章:类的加载、连接与初始化

2012-09-08 
深入理解java虚拟机系列文章:类的加载、连接与初始化类开始加载到运行要经过以下几个步骤:加载:查找并加载

深入理解java虚拟机系列文章:类的加载、连接与初始化
类开始加载到运行要经过以下几个步骤:

加载:查找并加载类的二进制数据(加载到内存中)
连接
    验证:确保被加载的类的正确性
    准备:为类的静态变量分配内存,并将其初始化为默认值
    解析:把类中的符号引用转换为直接引用
初始化:为类的静态变量赋予正确的初始值(用户赋予的值)



下面看一个例子:

package com.naxsu.jvm;class Singleton {//private static Singleton singleton=new Singleton();//放在前面,输出1和0public static int count1;public static int count2 = 0;private static Singleton singleton=new Singleton();//放在后面,输出1和1private 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

热点排行