标签:案例 常量池 指令 入口 ini 类变量 完成 com 程序员
好程序员Java学习路线分享JVM类加载机制,JVM相关概念jvm<br>
jvm(Java Virtual Machine)Java虚拟机,是用代码虚拟出来的计算机,模拟执行计算机的各项功能,它有自己的硬件架构,如:处理器、堆栈、寄存器等,还有自己的一套指令系统,在不同的操作系统上都可以安装JVM,从而实现Java程序在不同的操作系统上都能执行,JVM就是为实现Java的跨平台特性。
JVM加载类的过程
我们执行Java程序开发出来后,需要先编译再执行,JVM就负责加载类的过程。<br>
类加载的过程分为:
public static int count = 100;
如:上面的count变量在准备阶段会赋值为0,在初始化时再赋值为100;
虚拟机启动时,定义了main()方法的那个类先初始化
代码案例
了解了类的加载机制,我们来看一道面试题:
public class MySingleton {
private static MySingleton singleton = new MySingleton();
public static int count1 = 0;
public static int count2;
private MySingleton(){
count1++;
count2++;
}
public static MySingleton getInstance(){
return singleton;
}
public static void main(String[] args) {
MySingleton singleton = MySingleton.getInstance();
System.out.println("count1-->"+MySingleton.count1);
System.out.println("count2-->"+MySingleton.count2);
}
}
上面的结果,大多数同学可能认为两个静态变量都是1,结果比较意外:
count1-->0
count2-->1
这是为什么呢?下面我们来分析下:
标签:案例 常量池 指令 入口 ini 类变量 完成 com 程序员
原文地址:https://blog.51cto.com/14479068/2439170