[英]byte and short data types in Java can accept the value outside the range by explicit cast. The higher data types however can not. Why?
[英]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.