都知道int占32位,最高位是符号位那么我赋值一个16进制给他如
int a = 0xFFFFFFFF;编译器没有报错。表示-1;
而byte占8位,最高位是符号位,
照理说:byte = 0xFF;也应该是正确的。(1111 1111)表示-1;
但是这样赋值,编译器报错。
而:
byte s = 0x7F;是正确的。表示127。
byte s = 0x80;是错误的。本应该是(1000 0000 表示-128)
貌似是让最高位为1的赋值,编译器都认为是错的。
我想问的是,上面那些byte的赋值,为什么错了?为什么不跟int是一致的呢?
跟byte类似,short也是这样的问题,short s = 0x7fff;正确 而short s = 0x8000;错误
对了,我的JDK版本是1.6.0_10
------解决方案--------------------
A hexadecimal numeral consists of the leading ASCII characters 0x or 0X followed by one or more ASCII hexadecimal digits and can represent a positive, zero, or negative integer. Hexadecimal digits with values 10 through 15 are represented by the ASCII letters a through f or A through F, respectively; each letter used as a hexadecimal digit may be uppercase or lowercase.
0x开头的数字都是int类型,而不是byte或者short类型。
------解决方案--------------------
是的,int是32位的楼主如此复制,没超过自然可行咯。