分析:
-
方法区先加载
Phone.class
和DemoPhoneOne
类文件 -
程序从
DemoPhoneOne
类中的main方法开始执行,则main方法进栈(压栈) -
在栈中main方法创建一个了一个Phone类型的变量one,用来保存堆中创建的对象的地址值
-
new的一个对象one保存在堆中(只要是new的东西都会在堆中)
-
保存的对象中有成员变量(并赋给它们一个默认值)也有成员方法但其保存的是地址值(方法区中成员方法
call()和sendMessage( )
的地址值) -
在堆中创建的一个对象也会有一个地址,其会交给栈中main方法中的 Phone one保存
-
赋值:在栈中main方法中执行这些语句
one.brand = "苹果"; one.price = 8388.0; one.color = "黑色";
-
其会顺着Phone one储存的地址值找到堆中的成员变量,将值赋给它们
-
调用方法
one.call
();和one.sendMessage
(); 会使其进栈,待执行完后这些方法会自动出栈(弹栈)
注:每执行完一个方法,会使其出栈,之后才往下执行其他的方法
- 最后程序中所有的语句执行完后,main方法才会出栈(弹栈)
注:以上分析内容属于个人理解,如果有误,请指正