Powodem buforowania małych liczb całkowitych, jeśli o to pytasz, jest to, że wiele algorytmów używa małych liczb całkowitych w swoich obliczeniach, więc unikanie narzutu tworzenia obiektów dla tych wartości wydaje się być opłacalne.
Powstaje wtedy pytanie, które liczby całkowite mają być buforowane. Ponownie, mówiąc ogólnie, częstotliwość, z jaką używane są wartości stałe, ma tendencję do zmniejszania się wraz ze wzrostem wartości bezwzględnej stałej - wszyscy spędzają dużo czasu na wartościach 1, 2 lub 10, stosunkowo niewielu bardzo używa wartości 109 intensywnie; mniej będzie miało wydajność zależną od tego, jak szybko można uzyskać liczbę całkowitą dla 722. Java zdecydowała się przydzielić 256 przedziałów obejmujących zakres wartości bajtu ze znakiem. Decyzja ta mogła zostać oparta na analizie programów istniejących w tamtym czasie, ale równie prawdopodobne jest, że była to decyzja czysto arbitralna. Jest to rozsądna ilość miejsca do zainwestowania, można uzyskać do niej szybki dostęp (maska, aby dowiedzieć się, czy wartość mieści się w zakresie pamięci podręcznej, a następnie szybkie wyszukiwanie w tabeli, aby uzyskać dostęp do pamięci podręcznej) i na pewno obejmie najczęstsze przypadki.
Innymi słowy, myślę, że odpowiedź na twoje pytanie brzmi: „nie jest tak subiektywne, jak myślałeś, ale dokładne granice są w dużej mierze decyzją opartą na regułach ... a eksperymentalne dowody wskazują, że było wystarczająco dobre. "