事实上,初始化方式 {1,2} 是 new int[]{1,2} 的简写。下面演示两者:
public void arrayTest1(){int[] array = new int[]{1,2,3};}public void arrayTest2(){int[] array = {1,2,3};}
看下反编译结果,两者是一样的。
public void arrayTest1();Code:0: iconst_31: newarray int3: dup4: iconst_05: iconst_16: iastore7: dup8: iconst_19: iconst_210: iastore11: dup12: iconst_213: iconst_314: iastore15: astore_116: returnpublic void arrayTest2();Code:0: iconst_31: newarray int3: dup4: iconst_05: iconst_16: iastore7: dup8: iconst_19: iconst_210: iastore11: dup12: iconst_213: iconst_314: iastore15: astore_116: return
但他们又略有不同,简写形式只能用于 int[] 类型变量初始化。
int arr[] = {1,2}; //✅int arr[];arr = {1,2}; // ❌ERROR
第4行是赋值,不是初始化,不能用简写形式。
int arr[];arr = new int[] {1,2}; //✅
