我对Java支持哪些无符号数据类型感到困惑?
我已阅读this,但我不明白其非常复杂的解释(至少对我而言)。
答案 0 :(得分:30)
Java仅支持签名类型(char
除外),因为假设一种类型对于初学者来说比每种大小有两种类型更容易理解。在C中,它被认为是错误的来源,因此不包括对无符号类型的支持。
所以设计师选择了四种尺寸
byte
,8位short
,16位int
,32位long
,64位。并且为了保持一致,它们都被签名,就像float
和double
一样。但是签名字节很少非常有用,因为它们允许无符号16位char
具有无符号{ {1}}可能更有意义。
当这种方法不能很好地工作时,必须与使用无符号整数类型的系统进行交互。这可能是混乱的来源以及使用哪种类型,因为它通常没有任何区别。 Java 8也将支持无符号类型的操作。这些被添加到包装类中,如byte
和Integer
答案 1 :(得分:5)
所有Java数字类型都已签名。这是设计师的决定。有些人认为签名字节是个坏主意。 J.Bloch在接受采访时说“我要说Java平台上最奇怪的事情是字节类型是签名的。” http://www.theserverside.com/news/thread.tss?thread_id=51624