字节值介于0到255之间,非常简单直接。然而,Java并没有这么认为,并认为价值在-128到128之间,并且毁了我的生活和许多其他人。
我只是想知道什么是重要的想法?为什么每次我需要获得无符号字节值时,我必须这样做:
int byteValue = (int) javaByte & 0xFF;
答案 0 :(得分:1)
Java仅支持有符号整数。 byte
也是整数,因此Java在这里是一致的。
这不是C的情况,例如char
类型没有定义它是signed
还是unsigned
。你需要明确告诉。在我看来,这比默认情况下signed
更糟糕。
无论如何,C中对char的初衷是一个字符串字符,其中无符号有意义。在Java中,字符串字符有不同的类型 - char
。