Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Integer.toString(int), чистое любопытсво 
V
    Опции темы
EnJ
Дата 14.2.2010, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 4.1.2010
Где: Харьков

Репутация: нет
Всего: нет



Добрый вечер(утро...).
Изучая язык, полез в стандарные классы, смотреть как они реализованы и наткнулся на метод toString класса Integer:
Код

public static String toString(int i) {
        if (i == Integer.MIN_VALUE)
            return "-2147483648";
        int size = (i < 0) ? stringSize(-i) + 1 : stringSize(i);
        char[] buf = new char[size];
        getChars(i, size, buf);
        return new String(0, size, buf);
}

Интересуют 2-я и 3-я строки: зачем эта проверка нижней границы диапазона типа? Почему нет такой же для верхней границы?
Заранее пасиб smile
PM MAIL ICQ   Вверх
jk1
Дата 14.2.2010, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Цитата

зачем эта проверка нижней границы диапазона типа?

Затем, что метод static void getChars(int i, int index, char[] buf) используемый в приведенной реализации падает, если i == Integer.MIN_VALUE. Чтобы избежать этого, этот крайний случай обрабатывается отдельно.
Что касается верхней границы типа, то она обрабатывается корректно, поэтому в обходе нет необходимости.

Это сообщение отредактировал(а) jk1 - 15.2.2010, 19:17


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
Vasay
Дата 14.2.2010, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



EnJ

А подумай  smile  Вспомни диапазон int. Посмотри, что получится, если не сделать эту проверку. 



--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
EnJ
Дата 15.2.2010, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 4.1.2010
Где: Харьков

Репутация: нет
Всего: нет



Хм... диапазон интов от -2147483648 до 2147483647 (2 в 31 степени). Минимальное значение по модулю больше на единицу.
Тогда возникает вопрос, почему раелизовали такое минимальное значение, а максимальное другое? Какие-то технические ограниечения?
PM MAIL ICQ   Вверх
jk1
Дата 15.2.2010, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Цитата

почему раелизовали такое минимальное значение, а максимальное другое?

Поэтому
Внизу статьи,  в списке недостатков, содержится ответ и на ваш первоначальный вопрос.


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0671 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.