为什么 java 编译器不让我放入0xff
,byte
是0xff
8 位长,这只是byte
数据类型的大小。
有人可以解释为什么 1 有效,为什么 2 无效?
class a
{
public static void main(String[] args)
{
// 1 :: results in error
byte a = 0xff;
System.out.printf("%x\n",a);
//2 :: works fine
byte a = (int)0xff
System.out.printf("%x\n",a);
}
}
编辑我读了声称 0xff 是 255 的答案,那怎么办?不是吗1111 1111
,是什么让 0xff、-128 或 255 或任何与此有关的东西。为什么它不只是将它视为1111 1111
而不是将该字节的 8 位视为 1。