why from index is inclusive but end index is exclusive?

后端 未结 4 804
有刺的猬
有刺的猬 2020-12-16 11:51

In Java API methods like:

  • String.substring(int beginIndex, int endIndex)
  • String.subSequence(int beginIndex, int endIndex)
4条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-16 12:26

    Because:

    • Java is based on C, and C does it this way
    • It makes the code cleaner: If you want to capture to end of object, pass object.length (however the object implements this, eg size() etc) into the toIndex parameter - no need to add/subtract 1

    For example:

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

    This way, it is very obvious what is happening in the code (a good thing).

    EDIT An example of a C function that behaves like this is strncat from string.h:

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

    The size_t parameter's value corresponds to the java endPosition parameter in that they are both the length of the object, but counting from 0 if they are the index, it would be one byte beyond the end of the object.

提交回复
热议问题