有 Java 编程相关的问题?

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

java对象或基本类型

有人能给我解释一下整数、布尔值等在JAVA中代替它们的基本类型的用法吗

我似乎无法理解他们提供的优势。它们似乎在处理空值时产生了不必要的问题

谢谢


共 (4) 个答案

  1. # 1 楼答案

    BooleanIntegerLong。。。都是物体。您可以在不能使用基元类型的地方使用它们,例如

    • 将它们存储在一个集合中,如Map
    • 使用它们作为模板参数
    • 给它们赋值null
    • 以更一般的方式使用它们(例如Long作为Number

    示例:

    new ArrayList<Integer>();
    Long id = null;
    Number num = new Long( 3 );
    
  2. # 2 楼答案

    基本体总是更快
    然而,有时对象确实很有用:
    1.向上投射。您的函数可以将Number(是所有数值对象的父对象:Integer、Float等)作为参数
    2.可能的空值。例如,它是在数据库中存储时使用的。对象可以为null,基元必须具有值。所以,若db中的字段可以为null,那个么最好使用原语值的对象版本
    3.若函数接受对象,并且您总是给它一个原语,那个么自动装箱(将原语转换为对象)会产生费用。从函数返回时也是如此
    4.对象具有某些方法,例如getHashcode()、toString()等,这些方法在某些情况下非常有用

  3. # 3 楼答案

    有时候你真的需要一个值可以为空,例如,如果你的应用程序存储了用户数据,那么社会保险可能是未知的。在这种情况下,存储null而不是-1更干净

    还有一些事情您不能处理基元类型,比如将它们存储在映射中或使用多态性(Double和Integer都是Number的实例)

  4. # 4 楼答案

    整数、布尔等的基本原理是允许在需要引用类型的上下文中使用基元类型。典型的用例是集合API,它提供集合、列表、映射、队列等,其中元素类型必须是某种引用类型

    因此我可以写:

    List<Integer> list = new ArrayList<Integer>();
    

    但以下是一个编译错误:

    List<int> list = new ArrayList<int>();
    

    注意,原始包装器类型的这个用例早于泛型类型和“新”集合API,并且可以追溯到只有VectorHashtable的原始(预泛型)形式及其同类的集合类型的时代