Подписанные и неподписанные типы данных в java

У меня есть путаница в отношении того, какие неподписанные типы данных поддерживает 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