2014-09-13 69 views
0

你能給我一些簡單的英文單詞的解釋:爲什麼java字符串處理函數GetChars返回字符串最後一個字符-1

則GetChars()和子進程(INT的startIndex,詮釋endIndex的)

函數返回從startindex開始到endindex -1的子串,原因是什麼。在C中有一個終止空字符,但它沒有任何終止空字符的Java。那麼爲什麼在java中lastcharacter-1。在這個程序中我使用了子序列函數,輸出應該是「glech」。但事實並非如此。輸出是「glec」。爲什麼?

class simple 
{ 
    public static void main(String args[]) 
    { 
     String str="gigglecheguvera"; 
     System.out.println(str.subSequence(3,7)); 
    } 
} 
+0

我沒有寫標準庫,但我懷疑它是這樣'str.substring(0,str.length())'返回原始字符串。 – kiheru 2014-09-13 08:24:54

+2

我已經刪除了你的題外開篇段落。它不僅阻止了人們看到實際的問題,而且它還是低估了誘餌。 (是的,真的,相信我。) – 2014-09-13 08:25:06

+0

這就是他們應該如何決定的,不要過多考慮它。 – Maroun 2014-09-13 08:26:20

回答

3

startIndex是從哪裏開始指標,endIndex是該指數在哪裏停止。所以讓我們看看:

 
    +----------StartIndex 
    | +---- endIndex 
    v v 
gigglecheguvera 

這最終會變得非常有用。舉例來說,如果你想找到一個空格和逗號之間的文本:

String str = source.substring(source.indexOf(' '), source.indexOf(',')); 

這也意味着我們可以用字符串的長度作爲第二個參數不用出界。這對於您可能找到或不可找到您的最終字符的情況很方便:

int endIndex = source.indexOf(','); 
String str = source.substring(source.indexOf(' '), endIndex == -1 ? source.length : endIndex); 
1

C中的空終止符不是原因。

開始索引是一個「包含邊界」,結束索引是「獨佔邊界」。這是一個常見的慣例。例如,看看Arrays.copyOfRange。它做同樣的事情。

人們這樣做是因爲它通常更方便。例如,這是一個有用的結果:str.subSequence(a, b).length() == b - a總是如此。

相關問題