开发者社区> 问答> 正文

java 变量在堆栈内存的问题

public class Test1 {
public int i;
public String e=new String("123");
public Test2 test2=new Test2();
        public void say(){
                String str2=new String("abc");
                int i=0;
                System.out.println(i);
    }
public static void main(String[] args) {
Test1 t1=new Test1();
}
}

主函数实例化一个t1对象,
在栈内存中有个t1的引用,在堆内存中有new Test1()对象,
问题来了
1:一般的成员变量我知道是在堆内存中存储,但是引用的对象在堆内存如何表示呢?
public String e=new String("123");
public Test2 test2=new Test2();
难道 e和test2 也会在栈中存储一个引用 然后指向到堆中的对象?
2:就是方法中的参数和变量,我知道在内存中方法的参数和变量都是局部变量都是放在栈内存中的

基本类型的数据值也是在栈内存中存储,字符常量是在常量池中存储
但是这里的方法内部的对象在堆栈中如何存储的呢?

展开
收起
蛮大人123 2016-05-27 10:40:06 2418 0
1 条回答
写回答
取消 提交回答
  • 个人对建模比较关注

    new 出来的都在堆上,不管class在哪定义,栈上只存基本变量和引用

    2019-07-17 19:17:16
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载