Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
360 views
in Technique[技术] by (71.8m points)

java - why from index is inclusive but end index is exclusive?

In Java API methods like:

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

Why is the beginning index inclusive but the end index exclusive? Why shouldn't they have been designed both inclusive?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...