2014.9.2
看下边这个程序:
class SuperClass
{
static{
System.out.println("superClass init");
}
public static int value=123;
public static void superMethod()
{
System.out.println("我是supermethod.");
}
}
class SubClass extends SuperClass
{
static{
System.out.println("subclass init;");
}
}
public class NotInitial
{
public static void main(String[] a)
{
System.out.println(SubClass.value);
SubClass.superMethod();
}
}
首先,jvm加载NotInitial类,
加载,
验证
准备
解析 ,对于SubClass.superMethod();这条语句,用的字节码指令是invokestatic,
所以要解析,先解析 类SubClass.
加载Subclass,
在SubClass中找这个方法,没有
加载SubClass的父类,SupperClass
在SuperClass中找,找到。
初始化,
调用main方法,
执行invokestatic,后边的是直接引用。
时间: 2024-11-05 16:58:46