java中的数组是引用类型。
当数组采用静态初始化的时候,会在堆区开辟空间吗?
比如:
int[] a={1,2,3,4,5};
用这个数组的的时候,它是在编译时候的将代码区{1,2,3,4,5}的地址赋给栈中的a呢,还是将在
堆中开辟空间,然后将代码区{1,2,3,4,5}的内容赋给堆中空间,然后将此空间的地址再赋值给a。java数组静态初始化栈类
当数组采用静态初始化的时候,会在堆区开辟空间吗?
比如:
int[] a={1,2,3,4,5};
用这个数组的的时候,它是在编译时候的将代码区{1,2,3,4,5}的地址赋给栈中的a呢,还是将在
堆中开辟空间,然后将代码区{1,2,3,4,5}的内容赋给堆中空间,然后将此空间的地址再赋值给a。java数组静态初始化栈类
你这个问题可能不同的虚拟机有不同的实现。
也可能是在堆中开辟的,也有可能把数据存放在常量池里,也有可能是在栈上。
自己看看java源码或许能够知道,不过知道与不知道对开发来说没什么意义。