为什么java字符串函数getChars返回最后一个字符为-1的字符串

为什么java字符串函数getChars返回最后一个字符为-1的字符串,java,string,jakarta-ee,Java,String,Jakarta Ee,你能用一些简单的英语单词给我解释一下吗 getChars()和子序列(int startindex、int endindex) 函数返回从startindex到endindex-1的子字符串。原因是什么。在C中有一个终止的空字符,但在java中没有任何终止的空字符。那么为什么在java中是lastcharacter-1呢。在这个程序中,我使用了子序列函数,输出应该是“glech”。但事实并非如此。输出为“glec”。为什么? startIndex是开始的索引,而endIndex是停止的索引。让我

你能用一些简单的英语单词给我解释一下吗

getChars()和子序列(int startindex、int endindex)

函数返回从startindex到endindex-1的子字符串。原因是什么。在C中有一个终止的空字符,但在java中没有任何终止的空字符。那么为什么在java中是lastcharacter-1呢。在这个程序中,我使用了子序列函数,输出应该是“glech”。但事实并非如此。输出为“glec”。为什么?


startIndex
是开始的索引,而
endIndex
是停止的索引。让我们来看看:

+----------StartIndex | +---- endIndex v v gigglecheguvera 这也意味着我们可以将字符串的长度用于第二个参数,而不会超出范围。这对于您可能找到或可能找不到结束字符的情况非常方便:

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

startIndex
是开始的索引,而
endIndex
是停止的索引。让我们来看看:

+----------StartIndex | +---- endIndex v v gigglecheguvera 这也意味着我们可以将字符串的长度用于第二个参数,而不会超出范围。这对于您可能找到或可能找不到结束字符的情况非常方便:

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

C中的null终止符不是原因

开始索引是“包含边界”,结束索引是“独占边界”。这是一个普遍的惯例。例如,看看。它做同样的事情


人们这样做是因为它通常更方便。例如,这是一个有用的结果:
str.subSequence(a,b).length()==b-a

C中的空终止符不是原因

开始索引是“包含边界”,结束索引是“独占边界”。这是一个普遍的惯例。例如,看看。它做同样的事情


人们这样做是因为它通常更方便。例如,这是一个有用的结果:
str.subSequence(a,b).length()==b-a

我没有编写标准库,但我怀疑是因为
str.substring(0,str.length())
返回了原始字符串。我已经删除了你的主题外的开头段落。这不仅使人们看不到真正的问题,而且是一种误导。(是的,真的,相信我。)他们就是这么决定的,不要想太多。@Maroun。就是这样。所以这背后没有任何逻辑。当然,这背后有逻辑。问题是你是否能发现所进行的讨论的过程,如果他们进行了讨论,那么你就可以了解他们为什么选择这样做而不是其他选择。不太可能;你问错地方了;这是没有必要的。接受它吧。我自己也觉得它很有用。我没有编写标准库,但我怀疑是因为
str.substring(0,str.length())
返回了原始字符串。我已经删除了你的主题外开头段落。这不仅使人们看不到真正的问题,而且是一种误导。(是的,真的,相信我。)他们就是这么决定的,不要想太多。@Maroun。就是这样。所以这背后没有任何逻辑。当然,这背后有逻辑。问题是你是否能发现所进行的讨论的过程,如果他们进行了讨论,那么你就可以了解他们为什么选择这样做而不是其他选择。不太可能;你问错地方了;这是没有必要的。接受它吧。我自己觉得它很有用。