java – 为什么索引是包容性的,但是索引是独占的?

前端之家收集整理的这篇文章主要介绍了java – 为什么索引是包容性的,但是索引是独占的?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Java API方法中,如:

> String.substring(int beginIndex,int endIndex)
> String.subSequence(int beginIndex,int endIndex)
> List.subList(int fromIndex,int toIndex)

为什么开始索引包含但是末尾索引是独占的?为什么他们不应该被设计为包容性的?

解决方法

因为:

> Java是基于C,C是这样做的
>它使代码更清洁:如果要捕获到对象的结尾,则将object.length(但是对象实现此,例如size()等)转换为toIndex参数 – 不需要添加/减去1

例如:

String lastThree = str.substring(str.length() - 3,str.length());

这样,很明显代码中发生了什么(一件好事).

编辑一个像这样的C函数的例子是来自string.h的strncat:

char *strncat(char *dest,const char *src,size_t n);

size_t参数的值对应于java endPosition参数,因为它们都是对象的长度,但是如果它们是索引则从0开始计数,它将是超出对象结束的一个字节.

猜你在找的Java相关文章