两个对象在main方法里面调用
新建一个Demo02PhoneTwo类,复制之前的代码到这里
这里创建了一个Two对象
one对象是苹果
two对象。把参数改成三星。
内存里又发生了什么事,这次不一样的地方是有两个对象
程序要想执行,main方法先进栈,
main进栈后就要逐行的执行。首先第一行我们创建了对象叫做one。
这就是一个局部变量,名称中保存的是一个地址的值,谁的地址呢?堆的,凡事new出来的都在堆当中
成员变量过来以后会有默认值
接下来是成员方法,成员方法很特殊。为什么特殊?他所保存的实际上是地址的值?谁的地址的值呢?是右侧的,在方法区中的地址值。看下面绿色箭头的指向
自己的地址是0X666.自己的地址就赋值交给one去处理。看红色箭头的指向。。根据这个地址能找到这个对象。
下面就是赋值的操作,苹果 8388.0 、黑色。默认值已经被修改为指定的数值
再往后就是调用两个方法call和sendMessage这两个方法
one通过红色找到这个对象,再通过绿色找到对应的方法
显示蓝色的箭头部分,call方法进栈。给谁打电话?乔布斯。然后调用方法,调用后 看差号。立马出栈
然后是sendMessage方法,红色、绿色、进栈、蓝色、调用方法
第二个对象
里面的成员方法的地址和第一个对象的地址是一样的
看有色绿色的箭头
0x999给对象two赋值
主要看下面橙色的箭头
修改变量的值
调用最下面的红色框内的 call方法和sendMessage方法。通过橙色箭头找对对象。再通过绿色箭头找到方法。
two如果不是重新new 的对象