首先byte只占用1个字节,所以byte的取值范围使用二进制表示为:0000 0000~1111 1111,表示-127到+127,只有255个数字,但是有些地方说表示256个数字。因为这里0使用两种方式表示0000 0000和1000 0000分表表示+0和-0,为了充分的利用内存规定1000 0000表示-128为什么不是+128呢?因为0正1负,所以byte的取值范围就是-128到127.其他的基本类型和byte的原理相同。 补充一点:short a = 128;byte b = (byte)a;输出a.b会出现什么结果呢?还是个会报错?根据上面的原理自行进行推理,提示一点,short占用两个字节,转换为1个字节时会截取低位。