有这么一个题,byte b = (byte)129;
我先在控制台打印了一下,发现竟然等于“-127”,我也很惊讶,为啥等于-127
我们来分析一下。我们想想,在java语言中,byte只占一个字节的,它的取值范围为负的128到正的127,当数字为127时,是byte的最大值,没有溢出,如果把128强制转换成byte,此时就会发生溢出现象,相当于最小的负数-128,那么,129被强制转换为byte后的值是-127,所以为-127.
有这么一个题,byte b = (byte)129;
我先在控制台打印了一下,发现竟然等于“-127”,我也很惊讶,为啥等于-127
我们来分析一下。我们想想,在java语言中,byte只占一个字节的,它的取值范围为负的128到正的127,当数字为127时,是byte的最大值,没有溢出,如果把128强制转换成byte,此时就会发生溢出现象,相当于最小的负数-128,那么,129被强制转换为byte后的值是-127,所以为-127.