java中的签名和未签名数据类型

Ref*_*ack 15 java types

关于Java支持哪些无符号数据类型,我有点困惑?

我读过这篇文章,但我不明白其非常复杂的解释(至少对我而言).

Pet*_*rey 31

Java仅支持签名类型(除外char),因为假设一种类型对于初学者来说比每种大小有两种类型更容易理解.在C中,它被认为是错误的来源,因此不包括对无符号类型的支持.

所以设计师选择了四种尺寸

  • byte,8位
  • short,16位
  • int,32位
  • long,64位.

为了保持一致,它们都被签署了float,double 但是一个带符号的字节很少非常有用,并且考虑到它们允许无符号16位char的无符号byte可能更有意义.

如果这不能很好地工作,那么当你必须与使用无符号整数类型的系统进行交互时.这可能是混乱的来源以及使用哪种类型,因为它通常没有任何区别.Java 8也将支持无符号类型的操作.这些被添加到包装类中,如IntegerLong


Evg*_*eev 5

所有Java数字类型都已签名.这是设计师的决定.有些人认为签名字节是个坏主意.J.Bloch在接受采访时说:" 我要说Java平台最奇怪的是字节类型是签名的." http://www.theserverside.com/news/thread.tss?thread_id=51624

  • `char`是未签名的.并且字节应该是未签名的恕我直言,出于同样的原因.例如,InputStream.read()读取无符号字节. (5认同)