不同数据类型的内存分配

1.基本数据类型(int,char,double...)
     当使用int a;来定义的时候,会在栈空间分配一个空间来存放a(此时为空);
     当使用int a=2;来定义的时候,会在栈空间分配一个空间来存放a,同时去找有没有值为2的内存空间,如果有就把a的地址空间指向2的地址空间,如果没有就创建值为2的地址空间,把a的地址空间指向那个地址空间。

2.对象
     在栈空间存放对象的地址(对应的堆空间的地址);
     在堆空间存放对象。

3.String
     String s=new String("Hello,World");//HELLO,WRLD放在静态存储区    
     String s="Hello,World";//和基本数据类型相似

4.数组
     栈中存放数组在堆中的首地址;
     堆中分配数组。

5.方法调用时的内存分配
     实例变量和对象在堆中;
     局部变量在栈中(方法执行完成之后就会被回收)。

猜你喜欢

转载自blog.csdn.net/Marmara01/article/details/82748151
今日推荐