我理解编译Long F1 = 100;
会失败,因为100是一个整数,因此编译器会将其设为Integer
,并且无法扩展包装类型。
但为什么编译Short S1 = 100;
会成功?非常感谢您的帮助。
答案 0 :(得分:2)
来自SCJP:
的第3章以下是合法的,
byte b = 27;
但仅仅是因为编译器会自动缩小文字值 到一个字节。换句话说,编译器放入强制转换。该 前面的代码与以下内容相同:
byte b = (byte) 27; // Explicitly cast the int literal to a byte
看起来好像编译器给你一个休息时间,让你拿一个 分配给小于int的整数变量的快捷方式。 (我们所说的关于字节的所有内容同样适用于char和short, 两者都小于int)
在您的情况下,编译器正在使用:
Short s = (short)100;
答案 1 :(得分:0)
如果你将后缀l / L加到要编译的文字中 像波纹管龙F1 = 100l;要么 长F1 = 100L;