代码之家  ›  专栏  ›  技术社区  ›  Nicola Ambrosetti

Java自动装箱到长[复制]

  •  0
  • Nicola Ambrosetti  · 技术社区  · 5 年前

    这个问题已经有了答案:

    为什么Java编译器不能直接 int 给一个 Long 是吗?

    long test = 1; // ok
    Long test2 = 2; // does not compile!
    Long test3 = 3L; // ok
    

    这尤其令人沮丧,因为(当然)一个人能做到

    long test = 1;    
    Long test2 = test;
    

    这是一个深思熟虑的设计选择吗?如果允许的话会出什么问题?

    1 回复  |  直到 5 年前
        1
  •  0
  •   Markus Steppberger    5 年前

    一个 int 是Java中的原始数据类型。 long 也是原始数据类型,但是 Long 不是基元数据类型。 隐式转换不是这样工作的。必须显式地告诉java转换为 是的。

    可以隐式地 长的 给一个 因为这是一个单一的隐式转换。从 内景 将是一个步骤中不支持的两个转换。

    对于整数后缀语法 100L 看见 JLS 3.1 是的。这个 L 将值的类型设置为 长的 而不是int,这是整数类型的默认情况。