为什么我不能在java中将(byte)数据类型转换成(short)数据类型

68bkxrlz  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(587)

所以,实际上我还是java编程语言的新手,还在学习转换数据类型,所以在这种情况下,我很难将字节转换成短字节。你们能帮帮我吗??

public class Main {
    public static void main(Strings[] args) {
        int number = 2;
        long updateNumber = number + 2;
        System.out.println(updateNumber); //output : 4
    }
}

所以在本例中,我可以正常地从(int)转换为(long)数据类型,因为(long)数据大小大于(int)。这与我试图将它从(short)转换为(int)时的情况相同。但是为什么我不能用这个概念把数据类型从(byte)转换成(short)??事件(短)的数据大小是否大于(字节)??

public class Main {
    public static void main(Strings[] args) {
        byte number = 2;
        short updateNumber = number + 2;
        System.out.println(updateNumber); //output : Error
    }
}

我想就是这样。。很抱歉给你添麻烦,谢谢你。呵呵。。

xv8emn3q

xv8emn3q1#

当我们加上两个 byte 类型变量或 byte 类型变量 int 将结果自动转换(隐式转换)到的类型变量 int . 因此,如果要将加法结果赋给一个短类型变量,编译器会给出错误。
而您可以通过显式转换将它赋给short类型变量。

public static void main(String[] args) throws MyException {
        byte number = 2;
        //Explicit casting
        short updateNumber = (short) (number + 2);

        System.out.println(updateNumber); // output : Error
}

由于加法的结果可能会溢出,因为这里的数字变量值可以在运行时更改。所以,如果您将数字声明为final,并且数字的加法符合字节的范围,那么您就不需要执行显式转换,因为编译器将提前知道加法的结果是否可以由字节保存。

public static void main(String[] args) throws MyException {
        final byte number = 2;
        //Explicit casting not needed as number is final
        short updateNumber = number + 2;

        System.out.println(updateNumber); // output : Error
 }

相关问题