有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

为什么java没有呢。整数扩展java。朗,朗?

可以将整数值赋给长变量。 可以将整数值自动装箱到长引用变量中。 但不可能将整数对象分配给长引用变量

我的视图是整数/整数是Long/Long支持的特定值范围

所以层次结构应该是整数扩展长和长扩展数

欢迎各界人士发表意见


共 (2) 个答案

  1. # 1 楼答案

    原因很简单:如果Integer扩展为Long,那么Integer的实例也将成为Long的实例:

    Integer i = 0;
    if (i instanceof Long) 
        // yes! oops... Integer would be a Long
    

    显然,从数学上讲,情况并非如此,也不应该如此

    不要将共享一系列值的类型与共享类层次结构的类型混淆


    关于存储等的讨论是实现细节,与此问题涉及的语言设计考虑因素无关

  2. # 2 楼答案

    一个Long包含一个long成员(value),该成员包含该Long的值

    如果IntegerLong的子类,Integer将使用基类的long成员,这是浪费的(因为long占用的字节数是int的两倍),或者忽略它并使用它自己的int成员,这将更加浪费(因为在这种情况下Integer类将同时包含基类的int成员和long成员)

    基本类型的装箱版本应该尽可能高效(因为在某些情况下,您必须使用它们,例如Collections,它不能直接保存基本类型)。因此,任何增加Integer类存储的类层次结构似乎都不是一个好主意