为什么我不能将(字节)数据类型转换为 Java 中的(短)数据类型

Why can't i cast (byte) Data Type into (short) Data Type in Java

所以,实际上我在 Java 编程语言方面还是新手,并且仍在学习转换数据类型 所以在这种情况下,我在将 Byte 转换为 Short 时遇到了麻烦。你们能帮帮我吗??

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
    }
}

我想就是这样..抱歉给您带来麻烦,谢谢您呵呵..

当我们添加两个 byte 类型变量或 byte 类型变量与 int 类型变量时,结果会自动转换(隐式转换 ) 到 int。所以如果我们想把加法的结果赋给一个short类型的变量,编译器会报错。

虽然您可以通过显式转换将其分配给 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
}

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

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
 }