在我的计算机科学课程中,我们被教导说,当您创建阵列时,JVM将根据阵列的大小自动分配内存。例如,如果您创建一个大小为10的整数数组,则JVM将为该数组分配10 * 32位数据。
我的问题是,当您创建大小可变的对象数组时,此过程如何工作?例如一个String对象。当您创建一个由10个字符串组成的数组时,系统上是否实际上为这些字符串保留了任何内存,或者由于它们只是指针,因此不需要进行内存分配吗?
由于String是扩展Object类的类,并且Java中的对象通过引用传递(并存储在变量中),因此字符串数组是对String对象的引用数组。所以,当你这样做
String
Object
String[] a = new String[10];
您正在创建一个引用数组,其中每个引用(不是其指向的对象)的大小都是已知的(32位计算机为32位,而64位计算机为64位)。
更新:正如乔恩·斯基特(Jon Skeet)在他的一个回答中所说,实际引用的大小可能与本机指针大小相同,但不能保证。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
点击生成二维码
我来说两句