在java中创建数组时,new运算符会做什么?

Rad*_*yak 4 java arrays memory-management

当我们创建一个classtype对象时,new运算符会在运行时分配内存.

myclass obj1 = new myclass();
Run Code Online (Sandbox Code Playgroud)

这里myclass()定义了一个构造函数myclass

int arr1[4] = new int[];
Run Code Online (Sandbox Code Playgroud)

new分配内存但是,int[]这里做了什么?

aio*_*obe 6

新的分配内存,但int []在这里做什么?

int[]部分只是指定新分配的内存应该具有的类型.

但是,由于数组不能动态增长,所以写入没有意义new int[](即使你已int[4]在声明中指定),你必须像这样编写它

int arr1[] = new int[4];
Run Code Online (Sandbox Code Playgroud)

或者像这样

int arr1[] = {1, 2, 3, 4};
Run Code Online (Sandbox Code Playgroud)

JLS中的相关部分: