【问题标题】:Using construtors with Integer [duplicate]将构造函数与整数一起使用 [重复]
【发布时间】:2013-10-02 23:26:12
【问题描述】:

我是 Java 新手,对使用构造函数有一些疑问。 在什么情况下我应该使用new Integer() 语句?看代码:

    Integer a = 129;//1
    Integer b = new Integer(129);//2
    List<Integer> list= new ArrayList<Integer>();
    list.add(new Integer(1));//3
    list.add(2);//4

哪一行是不良编程习惯的例子?

【问题讨论】:

标签: java list object integer


【解决方案1】:

使用autoboxing 作为默认模式 - 它一直是关于永远,让生活变得更加轻松。

自动装箱是 Java 编译器在原始类型与其对应的对象包装类之间进行的自动转换。例如,将 int 转换为 Integer,..

虽然与new Integer 略有不同(请参阅其他答案/cmets/链接),但我通常不认为使用new Integer 是一种好方法并严格避免使用它。

【讨论】:

    【解决方案2】:

    使用 new Integer() 将保证您有一个新的 Integer 对象引用。

    直接使用该值并不能保证这一点,因为将 int 自动装箱为 Integer 可能不会执行该对象实例化。

    我会说你只需要 new Integer(1) 在非常奇怪的边缘情况下,所以大多数时候我会说你永远不需要做 new Integer...

    另外请记住,自动装箱/拆箱可能会在某些极端情况下产生一些错误。

    Integer x = null;
    int y = x; // Null Pointer Exception
    

    发生自动(取消)装箱的长时间迭代可能会产生未经训练的眼睛可能不会注意到的性能成本

    【讨论】:

      猜你喜欢
      • 2011-12-01
      • 2012-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-29
      相关资源
      最近更新 更多