回答
謝謝。我認爲這個問題是這樣的:底層是否有一些棘手的問題?像'new String(「blabla」)' – ferrerverck
不。在Java中沒有數組池。 Java中的String是特殊的,它們在基元和對象之間。因此,'String a =「hello」;'和String a = new String(「Hello」);'是不同的。 – Maroun
@ferrerverck你可以看到兩者的字節碼,它會非常相似。 – Maroun
你的第二種形式是第一種形式只是語法速記。它們編譯成完全相同的字節碼。
看看編譯後的類文件中的字節碼,沒有什麼區別。
public class XFace {
public void test1(){
int[] a = new int[] {1, 2, 3};
}
public void test2(){
int[] a = {1, 2, 3};
}
}
Compiled from "XFace.java"
public class XFace extends java.lang.Objec
public XFace();
Code:
0: aload_0
1: invokespecial #8; //Method java/
4: return
public void test1();
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 test2();
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
}
- 1. 這兩種聲明自綁定的方式有什麼區別?
- 2. 這三種聲明變量的方式有什麼區別?
- 3. c#中下面的數組聲明有什麼區別?
- 4. 聲明「belongs_to model_name」比聲明「belongs_to model_id」更安全嗎?有什麼區別嗎?
- 5. JavaScript中的函數表達式與聲明有什麼區別?
- 6. 這兩個聲明有什麼區別?
- 7. 這兩個聲明有什麼區別?
- 8. 這兩個聲明有什麼區別?
- 9. List聲明有什麼區別?
- 10. 這些#import聲明有什麼區別?
- 11. 這兩個聲明有什麼區別?
- 12. 這兩個聲明有什麼區別?
- 13. 這兩個聲明有什麼區別?
- 14. 聲明JavaScript數組時,「{}」和「[]」有什麼區別?
- 15. Python中這兩個數組聲明有什麼區別?
- 16. 這兩個數組聲明有什麼區別?
- 17. Swift數組聲明區別
- 18. 同時聲明多個外鍵或單獨聲明它們有什麼區別?
- 19. 聲明式編程和命令式編程有什麼區別?
- 20. 聲明Stream與try-with-resources聲明之間有什麼區別?
- 21. Array聲明和Collection聲明之間有什麼區別
- 22. 每個聲明和每個聲明有什麼區別?
- 23. 這兩個聲明有什麼區別嗎?
- 24. 聲明變量in/out之間有什麼區別嗎?
- 25. 在主類或main方法中聲明數組有什麼區別?
- 26. 這兩種聲明原型方法的方式有什麼區別?
- 27. JavaScript中不同的方法聲明有什麼區別?
- 28. Matlab:使用方括號來聲明一個列表還有什麼區別嗎?
- 29. 這兩種在java中聲明對象的方式有什麼區別?
- 30. 在VB中聲明屬性的兩種方式 - 有什麼區別?
希望這將有助於http://www.learn-java-tutorial.com/Arrays.cfm#.UpHnzdKBnto – Shamse
dublicate http://stackoverflow.com/questions/19558078/declaring-arrays-in -java/19558227#19558227 –