You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Number包装类转型:为何new Long(10)合法而Long l2=10不合法

问题解答

  • 首先说明new Long(10)合法的原因:
    Java的Long类提供了参数为long基本类型的构造方法,而Java基础类型默认支持小范围类型向大范围类型的隐式拓宽转换,32位的int类型数值可以无精度损失地自动转换为64位的long类型,所以int字面量10会先隐式转为long类型,再传入构造方法生成Long对象,整步操作符合语法规则。
  • 再说明Long l2 = 10不合法的原因:
    Java的自动装箱规则仅支持基础类型和它对应的包装类直接互转:int只能直接装箱为Integer,long只能直接装箱为Long,语法不允许「int拓宽为long + long装箱为Long」两步隐式转换同时执行,因此直接把int类型的10赋值给Long类型变量会编译报错。
    如果要让这个赋值语句合法,只要把字面量标记为long类型即可:Long l2 = 10L;

内容的提问来源于stack exchange,提问作者EuginK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 02:15:03