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

时间:2017-04-02 02:21:40

标签: java arrays initialization

最近当我在LeetCode上做一些练习时,我发现了一些技巧解决方案。它使用Object o来引用数组Uncaught TypeError: Cannot read property 'mData' of undefined,我想也许是因为在java中一切都是对象。但是当我尝试这种方式时,它出错了。Object o = new Object[]{null,null};所以我尝试了各种方法来初始化数组,我希望看到差异,比如这些

Object o3 = {1,2};

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

1 个答案:

答案 0 :(得分:3)

初始值设定项{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};

P.S。以上内容适用于static以及实例字段,也适用于局部变量。 Java没有“静态与动态初始化”这样的区别。这是更多的C ++术语。

1 嗯,它也可以是byte[]long[]类型的变量,  float[]Integer[]等,文字12的分配兼容。请参阅Section 10.6 of the Java Language Specification