当前位置: 代码迷 >> J2SE >> 关于java中的堆栈数据摘引
  详细解决方案

关于java中的堆栈数据摘引

热度:57   发布时间:2016-04-23 20:04:21.0
关于java中的堆栈数据引用
public class Test
{
 public static void main(String args [])
 {
Use use=new Use();
use.change(use.a);
System.out.println(use.a);
 }
}
class Use
{
int a=5;
void change (int x)
{
x=3;
}
}
输出结果为什么a的值还是5呢?
我只知道int5是存在栈里的,但是不能理解为什么这样改不了。
这个程序在运行时,每一步里,堆,栈,方法池在发生什么变化?
还有,一个问题,我知道堆中存的是对象本身,但是就一段代码而言,具体存的是什么呢?比如这段代码中的哪些是存在堆中的?
------解决思路----------------------
void change (int x)
{
x=3;
}
这样定义函数不合适。局部变量x会在栈中创建,函数结束后,就被销毁了。
------解决思路----------------------
你定义的函数参数是不能回传的
------解决思路----------------------
当这个方法执行完后就释放了,什么也没改变。
------解决思路----------------------
方法的参数是传入参数的副本,方法内的操作不会操作传入的参数本身
  相关解决方案