2013-07-11 159 views

回答

12

Java字符串不是空終止的。它們以length的長度結尾。您可以創建一個Java字符串的最後一個字符,但不會自動終止字符串。 12<\0>45的長度仍然是5而不是2,如在C.

3

該文檔沒有提到這種類型。我假設你讀錯了。

如果某些Java實現空終止字符串,那麼它是一個實現細節,但沒有任何語言規範保證。 (當然,作爲assylias註釋,字符串可能包含Java中的U + 0000)。但這並不是前所未聞的。 VB的字符串指向開頭,並以null結尾,使它們與普通的C API兼容,並且它們的長度存儲在字符串的開頭之前。

+0

這裏是鏈接.. http://www.dreamincode.net/forums/topic/33348-string-tutorial/ –

+0

@Joey實現似乎不太可能,因爲'\ u000'是一個有效的字符。 – assylias

+1

@AmitBhaira查找不同的(如果可能更好)教程,例如:http://docs.oracle.com/javase/tutorial/java/data/strings.html – assylias

-4

長度字段和保持字符串null都終止這種策略通常是僱主,因爲許多庫和api的期望空終止的字符串。

這意味着你仍然可以獲得保持長度獨立的性能增長,並且能夠直接將字符串傳遞給api,而不必創建字符串的副本。簡而言之:兩個世界中最好的只有一個字節的開銷。

+0

這對於Java來說是錯誤的。 –

7

不要相信你讀的所有東西。在下面的屏幕截圖中,您可以看到沒有空終止。 enter image description here

+0

是的,大多數調試器都可以證明這一點。 C中的「字符串」只是一組連續的內存字節,所以一串「123」應該顯示「1」,「2」,「3」,「\ 0」。 – OldProgrammer

相關問題