1) 为什么不允许以下分配:
byte b = 0b11111111; // 8 bits or 1 byte
但这个分配是允许的:
int i = 0b11111111111111111111111111111111; //32 bits or 4 bytes
两种类型都已签名,我希望b
and i
为-1。
2)为什么整数MIN_VALUE没有符号?
public static final int MIN_VALUE = 0x80000000;
但是字节 MIN_VALUE 确实有符号吗?
public static final byte MIN_VALUE = -128;
问题1)
这是因为0b11111111
is an int
字面量,其值为255
。该值不适合一个字节。看http://docs.oracle.com/javase/7/docs/technotes/guides/language/binary-literals.html有关此的更多详细信息。
问题2)
当我们编写二进制或十六进制文字时,我们从不添加符号。字面意思0x80000000
实际上是一个负值,即使我们不这样写。
JDK 的制造者选择使用十进制文字并没有真正充分的理由-128
但十六进制文字0x80000000
;除了在每种情况下,这样的目的可能会更清楚。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)