创建对象在后:
测试结果是:
1
1
创建对象在前:
测试结果是:
1
0
Why?
这就涉及到“类加载机制”了。
通常地,javac工具把代码编译成class文件,java工具把class文件加载到虚拟机,虚拟机吧class文件加载到内存。
而虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制。
附上代码,方便检验:
package jvmTest1;
public class SingleTon {
private static SingleTon singleTon = new SingleTon();
public static int count1;
public static int count2 = 0;
private SingleTon() {
count1++;
count2++;
}
public static SingleTon getSingleTon() {
return singleTon;
}
// -------------------------------------------------------------------
public static void main(String[] args) {
SingleTon.getSingleTon();
System.out.println(SingleTon.count1);
System.out.println(SingleTon.count2);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/117830.html