Java中静态初始化和动态初始化的区别是什么?

Java中静态初始化和动态初始化的区别是什么?,java,arrays,initialization,Java,Arrays,Initialization,最近,当我在LeetCode上进行一些实践时,我发现了一些技巧性的解决方案。它使用对象o引用arrayObject o=new Object[]{null,null};,我想这可能是因为在java中,一切都是对象。但当我尝试这种方法时,它出错了;所以我尝试了各种方法来初始化数组,我想看看它们之间的区别,就像下面这些 int arr[] = {1,2}; Object o = arr; Object o1 = new int[2]; Object o2 = new int[]{1,2}; Obje

最近,当我在LeetCode上进行一些实践时,我发现了一些技巧性的解决方案。它使用对象o引用arrayObject o=new Object[]{null,null};,我想这可能是因为在java中,一切都是对象。但当我尝试这种方法时,它出错了;所以我尝试了各种方法来初始化数组,我想看看它们之间的区别,就像下面这些

int arr[] = {1,2};
Object o = arr;
Object o1 = new int[2];
Object o2 = new int[]{1,2};
Object o3 = {1,2};
只有o3会编译错误,我不知道是不是因为初始化的方式,我知道当我使用静态初始化时,它会先分配内存,当使用动态初始化时不会。它们之间的任何其他差异都会导致此错误?当我使用new创建数组时。它在jvm中做了什么?提前感谢。

初始化器{1,2}是new int[]{1,2}的缩写。例如,此速记只能用作int[].1类型变量的初始值设定项,但以下操作有效:

int arr[] = {1,2};
这并不是:

int arr[];
arr = {1,2}; // ERROR
相反,您需要使用:

int arr[];
arr = new int[] {1,2};
同样,您可以使用:

Object o3 = new int[] {1,2};
另外,上述内容适用于静态字段和实例字段,也适用于局部变量。Java没有静态初始化和动态初始化的区别。这是更多的C++术语。 1好的,它也可以用于byte[],long[]类型的变量, 浮点数[]、整数[]等,其中文字1和2与赋值兼容。请参阅。

初始值设定项{1,2}是新int[]{1,2}的缩写。例如,此速记只能用作int[].1类型变量的初始值设定项,但以下操作有效:

int arr[] = {1,2};
这并不是:

int arr[];
arr = {1,2}; // ERROR
相反,您需要使用:

int arr[];
arr = new int[] {1,2};
同样,您可以使用:

Object o3 = new int[] {1,2};
另外,上述内容适用于静态字段和实例字段,也适用于局部变量。Java没有静态初始化和动态初始化的区别。这是更多的C++术语。 1好的,它也可以用于byte[],long[]类型的变量,
浮点数[]、整数[]等,其中文字1和2与赋值兼容。请参阅。

在java中,一切都是对象不,原语不是对象唯一的区别是java中没有“静态初始化”这类东西。在java中,一切都是对象不,原语不是对象唯一的区别是java中没有“静态初始化”这类东西。