前言
在介绍java虚拟机的类加载机制之前我们先看两道题目,如果你对这两道题目都能正确写出结果,那就说明你对java虚拟机类加载过程比较熟悉
一
public class SSClass
{
static
{
System.out.println("SSClass");
}
}
public class SuperClass extends SSClass
{
static
{
System.out.println("SuperClass init!");
}
public static int value = 123;
public SuperClass()
{
System.out.println("init SuperClass");
}
}
public class SubClass extends SuperClass
{
static
{
System.out.println("SubClass init");
}
static int a;
public SubClass()
{
System.out.println("init SubClass");
}
}
public class NotInitialization
{
public static void main(String[] args)
{
System.out.println(SubClass.value);
}
}
二
public class Text {
public static int k =0 ;
public static Text t1 = new Text("t1") ;
public static Text t2 = new Text("t2") ;
public static int i = print("i") ;
public static int n =99 ;
public int j = print("j") ;
{
print("构造块");
}
static {
print("静态块");
}
public Text(String str){
System.out.println((++k)+":"+str+" i="+i+" n="+n) ;
++i;++n ;
}
public static int print(String str){
System.out.println((++k)+":"+str+" i="+i+" n="+n) ;
++n;
return ++i ;
}
public static void main (String args[]){
Text t = new Text("init") ;
}
}
接下来我们将聊一聊java虚拟机的加载过程