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