举例
public class Test{
public static void main(String[] args){Calculator cal = new Calculator();
cal.calculate();
}
}
另一个类:
public Calculator{
public void calculate(){
int x = 0;
int y = 1;
Log.e("Calculate", "result is -->" + x/y);
}
流程:
1,首先,JVM开始运行时,会将Test.java、Calcultor.class 编译成 Test.class文件
2,程序开始运行时,会运行程序的入口方法 ---- main方法
3,JVM首先为该程序创建 方法区、堆区、栈区等
4,运行入口方法时,JVM会将Test.class装载进内存,然后在栈区中为main()方法创建一个栈帧
5,然后开始执行 Calculator cal = new Calculator();
6,首先会在方法区中装载Calculator.class,然后需要在堆区去创建一个Calculator实例对象,
7,这个实例对象会保有着方法区中Calculator.class的引用,即知道自己是哪个class文件的
8,然后调用cal.calculate();时,就会到Calculator类的方法表中进行方法的查找,如果找到了calculate()方法,就会在栈中,为calculate()方法创建一个栈帧,
9,然后接下来就会运行cal.calculate(); 此时就会去Calculator.class的字节码文件中去查找calculate()的方法体,然后去执行该方法体
网友评论