java项目运行时堆栈情况
在看视频的时候对了解到的知识进行总结,加深记忆,有看到错误的希望大家指出,一起学习。
1.当new一个类时
此处给出了三个类,其中有三个成员变量以及两个成员方法,当项目运行时,首先会运行main方法,将main方法写入栈(stack)中,而phone类整体在方法体中,当需要的时候在调用。
1.Phone one=new Phone();
new了一个变量one,将Phone中的内容放入堆中,但是这里要注意的是,堆中并不是放入Phone中所有的内容,只是将其中的成员变量放入,而其中的成员方法并没有放入堆中,而是将成员方法在方法体中的地址放入堆中。
2.one.call(“111”);
当要调用到Phone中的成员方法时,在从堆中取出对应地址的方法,调入栈中,当该方法运行完成之后,就从栈中调出。
2.给另一个类赋值时
此处的Phone two=one;
实际上就是将one的地址赋值给two,使two也指向堆中和one同一块地址区。
3.当一个类对象作为参数时
其在参数中传递的实际上是对象的地址值。
4.类作为方法的返回值
函数的返回值其实为对象的地址值,大题的过程同类对象作为参数的情况相同。