字符串不是值類型,但我們仍然使用它的值類型。那麼,string s;
編譯成類似string s = new String(..);
?是「string s;」編譯爲「string s = new String(..);」?
0
A
回答
2
當您定義string s;
時,您只能定義一個引用,它當前根本沒有指向任何內容。由於字符串是引用類型,因此編譯器不會生成string s = new String(..);
。你可能會理解它,string s = null;
將是編譯結果。
對於值類型,例如int,情況是不同的。例如,當您定義int i;
時,它將編譯爲int i = 0;
,其中0是默認值。
0
我想通了我的困惑:在閱讀this後,我明白堆棧將持有參考s
將在初始化後分配在堆中。
+0
我不知道誰投了票,但你的理解比你在問題中表達的要好得多。但是,它仍然只涵蓋了一些字符串之謎。還有另一個重要的事情,使字符串特殊,http://msdn.microsoft.com/en-us/library/system.string.isinterned.aspx – 2012-03-11 11:05:33
相關問題
- 1. String s =「something」;和String s = new String(「something」);
- 2. 聲明String s = new String(「abc」)。intern(); over String s =「abc」(反之亦然)
- 3. `string s(「hello」);```string s =「hello」;`
- 4. 在Java中,是String s = new String()有沒有用?
- 5. string s; &s+1;法律? UB?
- 6. 什麼時候應該使用String s = new String(「Hello World」)?
- 7. python string u「%(word)s」
- 8. Is String s =「foobar」atomic?
- 9. writeUTF(String s)將VS
- 10. Double.valueOf(String s)和Double.ParseDouble(String s)有什麼區別?
- 11. main(String ... s)和main(String [] s)有什麼區別?
- 12. 爲什麼string str = new string(「abc」)不能通過編譯器?
- 13. android getSystemService(String s) - 反射?
- 14. 如何使用System.Web.UI.Page.DecryptString(String s)?
- 15. cordova store fileEntry name to string
- 16. TextView String(s)不出現
- 17. 試圖將元素添加到列表<String[,]> S = new List <String[,]>();
- 18. std :: string s()奇怪的行爲
- 19. 爪哇 - URLDecoder.decode(String s)將VS URLDecoder.decode(一個String,字符串ENC)
- 20. className.main(new String [] {「filename.txt」})?
- 21. force assertEquals(String s,Object o)使用o.toString()?
- 22. C#中的Integer.parseInt(String s,int radix)
- 23. Java,泛型:Set <?> s = HashSet <String>()和Set s = HashSet <String>()之間的區別是什麼?
- 24. String和new String有什麼區別?
- 25. 我無法使用Color.FromName(string s)方法
- 26. 對String [] s的列表進行排序?
- 27. 調用Application.method(String s)將方法從index.scala.html
- 28. 在Android中String foo =「bar」與String foo = new String(「bar」)?
- 29. 這兩個初始化有什麼區別:Object x = new String(); String x = new String();
- 30. 可能的Hashtable <Integer,String,String> hashtbl = new Hashtable <Integer,String,String>();
我不這麼認爲。 – BoltClock 2012-03-11 10:13:55
當你做'string s;'時,沒有任何東西被實例化。 – 2012-03-11 10:14:32
但是,如果它不是一個值類型,它必須用'new'實例化,不是嗎? – theateist 2012-03-11 10:15:36