+ -
当前位置:首页 → 问答吧 → 这两个局部变量谁在主线程的方法栈的底部?是a还是S?

这两个局部变量谁在主线程的方法栈的底部?是a还是S?

时间:2011-10-29

来源:互联网

public class Sample {

public static void main(String[] args) {
Sample s=null;
int a=0;
s=new Sample();[b][/b] a=s.method();
System.out.println(a);

}
private int a;
public int method (){
int b=0;
a++;
b=a;
return b;
}

}
代码如上.我想问的是:在主线程的方法栈的main()方法的栈帧中,局部变量a和s谁在栈底?主方法中int a=0,虚拟机会在栈中给它分配空间,这个没有疑问.但是上面Sample s=null这一句的话,虚拟机会在栈中给局部变量s分配空间吗?还是等到下面s=new Sample()的时候才给s在栈中分配空间?求教...

作者: big_3_shot   发布时间: 2011-10-29

个人理解。

Sample s就已经分配了个引用地址空间,这个地址空间用于存放引用指向对象的地址值,s=new Sample()的时候只是给它所存放的地址植付值

作者: shaosijun2004   发布时间: 2011-10-29

热门下载

更多