A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 零敢 中级黑马   /  2013-12-18 15:21  /  990 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1:java中数组动态创建时是在 堆 中分配内存的, 那么如:int[] intarray = {1, 2, 3, 4}; 静态声明时是在哪分配给内存空间的?
   2:java中除了堆栈外,还有其他储存数据的地方么,如静态段,只读数据段? java中常量和静态变量是放在哪的?
初学java, 高手指教啊!~!~
关键不懂的是象int[] intarray = {1, 2, 3, 4};分配的数组和用new分配的数组空间是在同一内存空间吗?  象那些字符常量又是在哪分配的,如String str = “helloworld”也是在堆中分配空间的么?

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

2 个回复

倒序浏览
栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中
堆:存放用new产生的数据
静态域:存放在对象中用static定义的静态成员
常量池:存放常量

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报 2 0
基本是楼上所说的,但我补充一下,分配的数组就是在堆的内存中产生空间的,它和new出来的东西是一个道理,也是在堆中产生的,不过为了更好的操作这些数组在栈中定义一个对象,然后把分配给堆中数组内存时产生的物理地址赋给了这个对象,最后这个对象就可以操作这个数组了。
还有,你要分清楚到底是在栈中产生内存还是在堆中产生,首先你要明确你这个变量到底是什么类型,基本数据类型在栈中,引用数据类型在堆中;局部变量在栈中,成员变量在堆中,并且还有默认初始值。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马