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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 slatop@qq.com 于 2013-5-16 10:14 编辑

有类
class CTest
{
}
Main函数中
CTest[] testArr = new CTest[10];
问1:上面这行是不是只在内存中产生一个10个数组的引用,并没有产生实际的CTest对象
问2:那么请问上面一行代码实际在内存中开辟了多大的空间?

其实我是想问,JAVA中所有的引用占用的内存是不是大小一样?如果引用保存的只是指针,那么任何类型的引用肯定都是一样的。32位下的大小是4个字节吗?

CTest[] testArr = new CTest[3]; 3*4 =12字节?
CTest test = new CTest();  4+object类型的大小?
int num = new int(); 4+4=8个字节?
int[]arr =new int[3];3*4+4=16字节?

评分

参与人数 1技术分 +1 收起 理由
刘胜寒 + 1

查看全部评分

1 个回复

倒序浏览
java中用的是unicode编码;
byte  1个字节
short 2个字节
char  2个字节
int   4个字节
long  8个字节
float 4个字节
double 8个字节
然后回答问题:
new CTest[10];不是生成引用,它是静态数组,在堆中开辟一片连续的空间,大小为10个单位;
java的引用相当于c++的指针,C++的指针是占四个字节,java引用应该也是固定的大小。

评分

参与人数 1技术分 +1 收起 理由
刘胜寒 + 1

查看全部评分

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