2013-03-12 66 views

回答

3

char[]數組包含組成該字符串的字符數組。

偏移量和計數用於String.substring()操作。當你得到一個字符串的子串時,結果String引用原始字符數組,但是存儲相關的偏移量和長度(這被稱爲flyweight pattern,並且是節省存儲器的常用技術)

例如, String.substring("ABCDEF", 1, 2);

將引用原始陣列的A,B,C,D,E,F但設置offset 1和length至1(因爲substring方法使用開始和結束索引)。請注意,你可以這麼做,因爲字符數組是不可變的。你不能改變它。

注意:這已經改變最近(我相信7u6),並且在最近的版本中不再是真的。我懷疑這是由於認識到這個優化並沒有太多用處。

0

它們允許來回傳遞一個數組作爲主要對數組的一部分感興趣的例程的支持。這使得人們不必擔心構建大量的小陣列,從而避免了與特定操作的對象構建相關的成本。例如,可以使用數組作爲輸入緩衝區,但需要額外的數組來處理該緩衝區內的分塊字符,使用數組,偏移量和計數的三元參數,可以「模擬」讀取從緩衝區中間不需要創建一個新的(二級)數組。

這很重要,因爲儘管您可能合理地想要一個數組(一個java中的對象)來容納輸入字符,但您可能不希望分配和垃圾回收數千個數組(並將字符複製到它們中)將數據傳遞到只需要單個單詞的內容,由空格分隔(嘿,這只是一個例子)。

相關問題