解释程序的输出结果,为什么输出的结果是-126,而不是130? public class TestDemo { public static void main(String args[]) { int i = 130 ; // 此范围超过了byte定义 byte s = (byte) i ;// 由int变为byte System.out.println(s) ; }
时间: 2023-03-21 07:00:39 浏览: 121
程序的出出结果
这段程序的输出结果是-126,而不是130,原因是:
首先,在程序中定义了一个int类型的变量i并赋值为130,但是后面的代码将这个int类型的变量强制转换为了byte类型的变量s。
由于Java中byte类型的取值范围是-128到127,因此当int类型的130强制转换为byte类型时,由于超出了byte类型的取值范围,导致数据溢出。具体地,130的二进制表示是1000 0010,强制转换为byte类型时,只保留了最后的八位,即0000 0010,这个二进制数在补码表示下是2,但是由于最高位是1,所以这个二进制数表示的是一个负数。因此,程序的输出结果是-126,而不是130。
阅读全文