short s = 'a'; // valid
Short ss = 'a'; // valid
int i = 'a'; // valid
Integer ii = 'a'; // invalid
爲什麼Integer ii ='a'無效,但是int i ='a'有效嗎?爲什麼短ss ='a'有效,但整數ii ='a'無效?java奇怪的分配規則
另一組問題:
byte b;
final short s = 1;
final Short ss = 1;
final int i =1;
final Integer ii = i;
final long L = 1;
final Long LL =1L;
b = s; // valid
b = ss; // invalid
b = i; // valid
b = ii; // invalid
b = L; // invalid
b = LL; // invalid
爲什麼B =升;無效,而b = s;有效?
請不要說這都是因爲JLS這麼說的。我想知道爲什麼JLS有這些不一致和不直觀的規則。我錯過了什麼?
因爲自動裝箱(和原始擴展轉換)不能使'char'成爲Integer。嘗試'Integer ii =(int)'a'; ' –
ii是類的實例,而我是整型數據類型的實例。 – Omore
在java中學習'Autoboxing and Unboxing'的好時機。 https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html – yogidilip