簡體   English   中英

為什么我不能在 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)時的情況相同。 但是為什么我不能使用這個概念將數據類型從(字節)轉換為(短)? 盡管(短​​)的數據大小大於(字節)??

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

我想就是這樣..很抱歉給你帶來麻煩,謝謝你嘿嘿..

當我們添加兩個byte類型變量或帶有int類型變量的byte類型變量時,結果會自動轉換隱式轉換)為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
}

作為加法的結果可能會溢出,因為這里的數字變量值可以在運行時更改。 因此,如果您將 number 聲明為 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
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM