一个字节可以存储 -128 到 +127 范围内的值,那么我不明白这里发生了什么?


import java.util.Scanner;
public class First{
public static void main(String[] args) {
byte a = (byte)257;
System.out.println(a); // output : 1
}
}

我是Java的新手,我不知道我是如何在这里得到1的输出的,有人能解释一下吗?

在这里,二进制系统发挥了它的作用。257的二进制代码是100000001。现在您已经知道,每个字节占用1字节内存(8位)。这意味着一个字节变量只能存储8个0和1。因为在二进制代码257(100000001)中,我们有9位(0和1),编译器会自动尝试转换为8位。对于截断,它将从右边取8位,最后将存储在字节变量中的存储将是00000001(最左边的1被截断)。现在00000001是1的二进制代码,所以1存储在变量a中,因此显示为a。

我希望你明白我想说的话。

最新更新