【发布时间】:2015-01-31 12:07:45
【问题描述】:
如果我写这样的东西
System.out.println(18);
哪种类型有“18”? 是 int 还是 byte? 还是它还没有类型?
它不能是 int,因为这样的东西是正确的:
byte b = 3;
这是不正确的:
int i = 3;
byte bb = i; //error!
编辑: 我想我在 Assignment Conversion 的规范中找到了正确的部分:
常量的编译时变窄意味着代码如:
byte theAnswer = 42;
是允许的。如果没有缩小范围,整数文字 42 具有 int 类型这一事实意味着需要强制转换为字节:
byte theAnswer = (byte) 42; // 强制转换是允许的,但不是必需的
【问题讨论】:
-
相当肯定它是一个int
-
Java 规范中对原始转换进行了仔细的说明。整数类型默认为
int,但有缩小和扩大转换的特定规则。 docs.oracle.com/javase/specs/jls/se7/html/jls-5.html
标签: java types numbers integer default