這兩行代碼之間是否存在顯着差異?新int [] {}之間的區別或者只是{}
int[] array = new int[]{1,2,3}
int[] array = {1,2,3}
如果我不得不猜測,相同的構造函數在第二個版本中隱式調用,使它們相同。
編輯: This question was explored previously here but with default values.我的問題考慮了非默認值的數組的初始化。
這兩行代碼之間是否存在顯着差異?新int [] {}之間的區別或者只是{}
int[] array = new int[]{1,2,3}
int[] array = {1,2,3}
如果我不得不猜測,相同的構造函數在第二個版本中隱式調用,使它們相同。
編輯: This question was explored previously here but with default values.我的問題考慮了非默認值的數組的初始化。
只是出於好奇,我也去編譯類以下方法
public void arrayTest1(){
int[] array = new int[]{1,2,3};
}
public void arrayTest2(){
int[] array = {1,2,3};
}
下面是與之相關的結果。
public void arrayTest1();
Code:
0: iconst_3
1: newarray int
3: dup
4: iconst_0
5: iconst_1
6: iastore
7: dup
8: iconst_1
9: iconst_2
10: iastore
11: dup
12: iconst_2
13: iconst_3
14: iastore
15: astore_1
16: return
public void arrayTest2();
Code:
0: iconst_3
1: newarray int
3: dup
4: iconst_0
5: iconst_1
6: iastore
7: dup
8: iconst_1
9: iconst_2
10: iastore
11: dup
12: iconst_2
13: iconst_3
14: iastore
15: astore_1
16: return
這兩個語句本質上看起來是相同的反編譯。
你有沒有試過反彙編字節碼,看看有沒有什麼明顯的區別? – Veera