就是這兩分配值的字節
Byte i1=new Byte(1);//complier error
byte b=1;//ok
我的問題之間的差別在哪裏1爲int字面值設爲1個字節。 但傳遞1到字節類的構造函數時,它給出錯誤
就是這兩分配值的字節
Byte i1=new Byte(1);//complier error
byte b=1;//ok
我的問題之間的差別在哪裏1爲int字面值設爲1個字節。 但傳遞1到字節類的構造函數時,它給出錯誤
值1是一個整型的文字。所以,你有以下幾種情況:
直接分配字面來byte
類型的變量會導致隱式轉換,因爲很明顯,程序員需要一個字節,而不是一個int。
Byte
ctor需要byte
值,編譯器會抱怨,因爲它不能爲方法或ctor參數執行隱式轉換。
Byte
是一個對象。 byte
是一個原始的。除此之外,這意味着Byte
參考可以保存null
。
如果我沒有弄錯,字節和字節是兩個不同的關鍵字。
或者是Java不區分大小寫?
Byte i1
是一個Object,而byte b
是一個原始類型。新的Byte(int)
不是Byte對象的有效構造函數。見here
字節I1 =新字節(1); //錯誤編譯
誤差因爲字節構造僅接受byte
或String
對象作爲值
http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Byte.html#Byte(byte)
,因爲要傳遞到包裝類字節的構造函數的整數,將發生編譯時錯誤,編譯器不會在這裏做隱式轉換。
方法調用轉換特別不包括作爲分配轉換一部分的整數常量的隱式縮小。
「Byte」是一個類,「byte」是默認數據類型之一。 類似的例子是「Integer」和「int」。
回到問題,編譯來自Byte接受「字節」或「字符串」作爲參數。 所以,請儘量修改代碼以
Byte i1=new Byte((byte)1);
或
Byte i1=new Byte("1");