Может ли строка содержать больше, чем Integer.MAX_VALUE число символов - PullRequest
4 голосов
/ 04 марта 2012

Если я хочу создать объект String, содержащий х число символов, где x> Integer.MAX_VALUE, могу ли я это сделать?

Спасибо.

Ответы [ 3 ]

5 голосов
/ 04 марта 2012

Посмотрите на источник .

поле count, которое указывает, что размер строки равен int - поэтому вы получите переполнение.

private final int count;
3 голосов
/ 04 марта 2012

Вместо хранения одной строки длиной 2 млрд. (Это будет использовать 8 ГБ памяти для создания кстати). Вы можете создать коллекцию строк. С ним не так легко работать, но он может быть любой длины.

2 голосов
/ 04 марта 2012

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

Базовый целочисленный тип данных может обращаться к диапазону вашей памяти.Поэтому вы не можете хранить любые строки, которые превышают вашу память.

Кроме того, вы не можете хранить любые данные, которые превышают ваш программный стек, который имеет очень ограниченный диапазон памяти по сравнению с системной памятью.вы получите исключение stackOverFlow при превышении памяти приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...