#java #unsigned
#java #неподписанный
Вопрос:
Я прочитал (и в настоящее время использую это), что я могу использовать long всякий раз, когда мне нужен unsigned int. Для меня это работает нормально, но кажется плохим дизайном. Есть ли лучший, более приемлемый способ сделать это? Как насчет длинных значений без знака?
Ответ №1:
Поскольку единственным беззнаковым примитивным типом в Java является char
, который имеет очень специфическое значение для обозначения символа Юникода, использование long
является наиболее идиоматичным способом.
По умолчанию JAXB также сопоставляется xsd:unsignedInt
с long
. (источник)
Редактировать: Если вы знаете, что верхний бит равен 0, или используете операции, в которых знак не имеет значения (например, вы просто передаете данные), int
вероятно, это более распространено. JAXB по умолчанию имеет значение только long
, потому что он не может знать, как вы собираетесь использовать данные.
Ответ №2:
В Java по выбору нет неподписанных типов, вы используете подписанные типы, которые больше исходного неподписанного типа, чтобы обойти ограничение, но таким образом вы используете вдвое больше необходимой памяти.
В Java нет понятия unsigned .