java一个对象内存图
一个数组内存图
凡是new的东西都在堆里面
凡是属性都在栈里面
栈里调用主程序入口会有一个方法栈,逐层执行。
变量array就是一个地址。array(0) 是先通过array这个地址,找到堆里的位置0
堆里会给属性附上默认值
一个对象内存图
程序开始执行,首先让main方法进栈。在运行main方法时候,方法区最先有数据,有什么数据, .class的信息。
堆参考着方法区的类的属性复制一份,注意,方法在堆里存的是个地址。
进栈也叫压栈,这个感觉像xml 所有方法是同一个xml ,根据方法名找到对应的执行。每个方法执行完毕立刻马上从栈空间消失。
两个对象,调用同一个方法的内存图。如下
注意:两个对象,new两次,new几次就在堆中出现几个对象。如果调用同一个方法,两个那么同一个方法在堆和方法区中的地址是一样的。
两个引用,引用的是同一个对象的内存图
只需要改一行代码,二者产生联系
phone one =new One()
Phone two=one
对象当做方法入参,穿进去的其实是地址值。其实和上面一样,两个对象共用一个地址了
对象作为返回值
调用方法先进栈,先返回一个地址,最后再把地址给对象。对象是调用方法时候才创建的
真正的改变,从来都是静默无声的。很多事情做不到的爱可以做到。做一个充满爱意的人儿。允许。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!