java中以下的代码,在栈内存和堆内存是怎样运行的,有图解最好了

classDemo{intx=3;publicstaticvoidmain(String[]args){Demod=newDemo();d.x=9;show(newDem... class Demo
{
int x=3;
public static void main(String[] args)
{
Demo d=new Demo();
d.x=9;
show(new Demo());
System.out.println(d.x);
}
public static void show(Demo d)
{
d.x=4;
}
}
展开
 我来答
bdh17ss5
2012-09-27 · TA获得超过390个赞
知道小有建树答主
回答量:207
采纳率:0%
帮助的人:87.5万
展开全部
show(new Demo());语句,是在堆中新建一个对象,那么内存分配给这个对象的地址是指向的是变量d啊 只不过这个d和上边的那个d是不同的...这个是局部变量,,是在这个方法内部的变量..jvm栈以帧为单位保存线程的状态,当线程激活一个方法时,jvm就会创建一个当前帧来保存参数,局部变量,中间计算过程和其他数据
小青年516927
2012-09-26
知道答主
回答量:46
采纳率:0%
帮助的人:9.7万
展开全部
之前我也是迷糊的看到这些东东。
博大精深,晚生佩服。

上楼的仁兄说的对啊 。
String str = "abc"; 确实是放在常量池中的啊。 栈中只不过存放的是引用啊 。我是这么理解的。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wwwzhangsan
2012-09-26 · TA获得超过286个赞
知道小有建树答主
回答量:119
采纳率:0%
帮助的人:115万
展开全部
栈里有两个变量d,进入main时创建一个,进入show方法是创建一个,各自都指向堆里的不同的对象。
追问
show(new Demo());语句,是在堆中新建一个对象,那么内存分配给这个对象的地址是指向哪个变量的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式