gpt4 book ai didi

java - substring(startIndex,endIndex) 返回从 startIndex start 到 endIndex-1 的字符串是谁?

转载 作者:行者123 更新时间:2023-12-01 08:11:46 24 4
gpt4 key购买 nike

我有以下代码

public static void main(String args[]) throws Exception
{
String mySite = "StackOverflow";
System.out.println(mySite.substring(0, 4));
}

这个打印是什么Stac根据我的理解索引从0开始。

S<-0
t<-1
a<-2
c<-3
k<-4

当我指定需要从索引 0 到索引 4 的字符串时,我希望返回 Stack,但它返回 Stac

当我查看 substring(int beginIndex, int endIndex) 源代码时,它显示以下内容。

 * @param      beginIndex   the beginning index, inclusive.
* @param endIndex the ending index, exclusive.

有人可以解释一下在这种情况下包容性和排他性是什么意思吗?为什么不让它变得更直观?有谁知道这种行为的具体原因吗?

最佳答案

  • 包含表示将包含该索引处的项目。
  • 独占表示该索引处的项目将包含在内。

真正的原因只能猜测,除非您可以在源代码中找到解释它的注释(可能),或者找到并询问原始作者(极不可能)。

人们可以推断出原因是因为 Java(以及几乎所有其他语言)中的 StringList 等都是 0 索引的(从你的问题,你似乎明白了,所以我将跳过解释),但这些长度的值总是比最终索引的值大一。还有许多其他排除某种“子字符串”/“子列表”/等的最终索引的示例和实例。功能,因为这样可以轻松获取字符串/列表/等的长度。并将其作为结束索引传递,然后始终假设它将被排除在 sub-whatever 功能的底层实现中,这样用户就不必总是记住输入 -1 或如果长度用作结束索引,则类似的偏移量。

实际上,在您意识到 0 索引与长度的交互作用之后,可以说(更)直观。

this duplicate question 接受的答案中有一个很好的解释这将 C 引入解释中。

关于java - substring(startIndex,endIndex) 返回从 startIndex start 到 endIndex-1 的字符串是谁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16717740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com