java数组声明并初始化时的内存分配时:
①String[] names = {"Zhangsan","Lisi","Wangwu"};
这个数组常量是在保存在堆内存中吗?如果是,是开辟了一块空间?还是三块
②String[] names = new String[3];
这个是在堆内存中开辟三块空间?还是一块空间
names是一个引用,也是一个指针,是保存在栈中的。“zhangsan”“lisi”"wangwu"是堆中中一块连续的物理内存,names这个引用是指向数组的首个字符串''zhangsan'' ,names+1则指向了"Lisi" 在堆中是开辟了一块连续的内存空间
String[] names = new String[3];也是在堆内存里开辟了一块连续的空间,只不过里面放的是三个null而已。