面向对象的内存调用

来源:互联网 发布:spss如何将数据分组 编辑:程序博客网 时间:2024/06/06 12:54

一个对象的内存调用

![**一个对象的内存调用的时候:main方法在栈中 类在堆中 然后在调用main方法的时候,main方法通过堆中的地址,给堆中的变量复制,然后输出
main方法中调用类中的方法时,main方法还是调用phone类,
然后phone通过成员方法给的地址成员方法将成员方法调到栈中,成员方法执行完成以后就会退出栈内存

注意:调用成员方法的时候,call方法调用完成后,就会被调出内存中,以此类推,最后面方法
执行完以后也会被调出栈内存中**]

(http://img.blog.csdn.net/20160312104047340)
这里写图片描述

两个对象的内存调用

!**跟一个对象的内存调用差不多,最开始程序从main方法进入,然后phone一个对象,然后在堆中new一个对象,
看是否存在phone这个类,然后堆中的类就会将变量调到堆中,然后
main通过堆的地址给变量赋值,然后输出,然后调用方法,
方法的调用是栈中的方法根据堆中给的地址值,然后堆通过方法区的地址调用成员方法,然后将方法调到栈中执行,然后
执行完以后将将方法调出栈中,然后再调第二个对象,重复上面的方法,所有的方法调用完以后,main方法被调出栈中,腾出内存**这里写图片描述

三个对象的内存调用

!**三个对象的内存调用 前两个对象的调用和前面的基本上是一样的,没有什么不同,主要是第三个对象的调用的时候,
这里phone p3=p1,这是在调用第三个对象的时候,phone p3=p1下面
就由一个输出p3.brand….等等,输出的值时魅族2000黑白,
应为栈在调用这些变量给这些变量赋值的时候是根据地址赋值的,然后phone p3=p1这是p3的地址是p1的地址,值已经被
赋予了魅族2000黑白,自然在输出的时候就是输出这几个值,然后必须给p3重新复制,然后在通过p1或者p3输出的值才是酷派2999土豪金**这里写图片描述

0 0