As "wise" pointed out, there is no guarantee, that the implementation will cache Integers or Longs. If we take the
word "always" into account, then K&B 5.0
is correct, because JLS says that the narrower wrapper types
must behave like that.
In fact JLS says that Integers and Longs
could cache values in the range of -32K to 32K (approx) if the implementation is meant for large memory systems.