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