Поскольку String в Java является ссылочным типом, строки хранятся в непрерывном блоке памяти.этот блок должен быть доступен по целочисленным индексам.Диапазон памяти должен быть между 0 и 2 ^ 32 -1 в 32-битной компьютерной архитектуре, что соответствует диапазону типов примитивных int.
Базовый целочисленный тип данных может обращаться к диапазону вашей памяти.Поэтому вы не можете хранить любые строки, которые превышают вашу память.
Кроме того, вы не можете хранить любые данные, которые превышают ваш программный стек, который имеет очень ограниченный диапазон памяти по сравнению с системной памятью.вы получите исключение stackOverFlow при превышении памяти приложения.