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
复制相似问题