On page 422, there is a discussion about String.substring(int begin, int end) ON page 426, there is a discussion about StringBuilder.delete(int begin, int end)
the book says the the second argument is one based and give a way to count it, the result is correct.
As I recalled, Java is a language using index starts from zero (a few cases related with database etc. excepted), so we'd better to use the way described in JDK API: start - The beginning index, inclusive. end - The ending index, exclusive.
I also think what is max value the end parameter is worth to be mentioned.
Bert, I'd say that both descriptions of the SDK are equally confusing; therefore, I'd err on the side of including the concept as it's described in the API. The apparent oddity is still worth trying to explain, however.
My own explanation for it has always been that the path-of-least-surprise can be defined to be the one that the one-parameter version of the method probably chains gracefully into the two parameter version.
That might be confusing/backwards, but coming from a CS 101 perspective when I first learned this, I imagined that because the SDK implementation would be simpler this way, it made more sense. Call me crazy.