首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Short to int自动升级

Short to int自动升级
EN

Stack Overflow用户
提问于 2015-03-26 21:03:22
回答 2查看 505关注 0票数 4
代码语言:javascript
运行
复制
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数据类型,那么为什么会发生自动提升呢?

EN

回答 2

Stack Overflow用户

发布于 2015-03-26 21:06:59

绑定序列的工作方式如下:

  1. 精确匹配(例如int--> int)
  2. Promotion (例如int --> long)
  3. Autoboxing/Unboxing (例如int --> Integer)
  4. Varags (例如int --> int...)
票数 8
EN

Stack Overflow用户

发布于 2015-03-26 21:07:14

好吧,当没有接受整数的方法时,有两个选择:自动将其装箱为Short或强制转换为shortJLS指出,首选的第二个选项是:

方法调用上下文允许使用以下方法之一:

  1. a identity conversion (§5.1.1)
  2. a widening conversion (§5.1.2)
  3. a widening conversion (§5.1.5)
  4. a boxing conversion (§5.1.7) (可选地,后面紧跟扩展引用conversion
  5. an unboxing conversion (§5.1.8)。

您在这里期望的是a boxing conversion,但您得到的是a widening primitive conversion

您可以阅读有关boxing here的更多信息,以正确理解shortShort之间的关系。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29279153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档