java数组声明并初始化时的内存分配时: ①String[] names = {"Zhangsan","Lisi","Wangwu"}; 这个数组常量

java数组声明并初始化时的内存分配时:
①String[] names = {"Zhangsan","Lisi","Wangwu"};
这个数组常量是在保存在堆内存中吗?如果是,是开辟了一块空间?还是三块
②String[] names = new String[3];
这个是在堆内存中开辟三块空间?还是一块空间

画完鬼画符发现已经有回答了,但是果断贴上否则百花了

数组元素和数组变量在内存中是分开存放的。

第二个

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-07

    names是一个引用,也是一个指针,是保存在栈中的。“zhangsan”“lisi”"wangwu"是堆中中一块连续的物理内存,names这个引用是指向数组的首个字符串''zhangsan'' ,names+1则指向了"Lisi"   在堆中是开辟了一块连续的内存空间

    String[] names = new String[3];也是在堆内存里开辟了一块连续的空间,只不过里面放的是三个null而已。

本回答被提问者和网友采纳
第2个回答  2013-10-07
引用数据类型数据存放在堆中,栈中存放对他的引用,也就是地址
第3个回答  2013-10-07
二者都在堆中开辟了三块空间,区别在于堆中的值不同而已,前者有值,后者为null
相似回答