Подписанные и неподписанные типы данных в java
У меня есть немного путаницы относительно того, какие неподписанные типы данных поддерживает Java?
Я прочитала этой но я не понимаю его очень сложного объяснения (по крайней мере для меня).
2 ответов
Java поддерживает только подписанные типы (кроме char
), потому что предполагалось, что один тип проще для начинающих понять, чем иметь два типа для каждого размера. В C это было воспринято как источник ошибки, поэтому поддержка неподписанных типов не была включена.
Итак, дизайнеры выбрали четыре размера
-
byte
, 8 бит -
short
, 16 бит -
int
, 32 бит -
long
, 64 немного.
и чтобы все было последовательно, все они были подписаны так же, как float
и double
однако подписанный байт редко бывает очень полезен и, учитывая, что они разрешены без знака 16-бит char
наличие unsigned byte
возможно, имело больше смысла.
где это не работает так хорошо, когда вам нужно взаимодействовать с системами, которые используют целочисленные типы без знака. Это может быть источником путаницы и какой тип использовать, потому что часто это не имеет никакого разница. Java 8 также будет иметь операции для поддержки неподписанных типов. Они добавляются в классы-оболочки, такие как Integer
и Long
все числовые типы Java подписаны. Это было решение дизайнеров. Некоторые люди думают, что это была плохая идея подписали байт. Блох в интервью сказал:"Я собираюсь сказать, что самая странная вещь о платформе Java заключается в том, что тип байта подписан."http://www.theserverside.com/news/thread.tss?thread_id=51624