public class Yikes1 {
public static void go(Long n) {
System.out.println("Long "); // printed
}
public static void go(Short n) {
System.out.println("Short "); // don't know why isn't this printed
}
public static void go(int n) {
System.out.println("int "); // printed
}
public static void main(String [] args) {
short y = 6;
long z = 7;
go(y);
go(z);
}
}
在打印输出之前,短值是如何转换为int的?
我认为加宽只在dataype-short不可用时有效,因此它寻找下一个可用的数据类型,在本例中为int,但是这里定义了short数据类型,那么为什么会发生自动提升呢?
发布于 2015-03-26 21:06:59
绑定序列的工作方式如下:
int--> int
)int --> long
)int --> Integer
)int --> int...
)发布于 2015-03-26 21:07:14
好吧,当没有接受整数的方法时,有两个选择:自动将其装箱为Short
或强制转换为short
。JLS指出,首选的第二个选项是:
方法调用上下文允许使用以下方法之一:
您在这里期望的是a boxing conversion
,但您得到的是a widening primitive conversion
。
您可以阅读有关boxing here的更多信息,以正确理解short
和Short
之间的关系。
https://stackoverflow.com/questions/29279153
复制相似问题