为什么在Java中不推荐使用int原始类型

时间:2014-02-19 11:42:04

标签: java integer int

在java中如果可以使用Integer代替intInteger提供额外的功能,那么我的问题是为什么int不被弃用,以及为什么{{1原始类型如此广泛使用?

5 个答案:

答案 0 :(得分:4)

不推荐使用它的一个简单原因是 int 更快。虽然你可以使用两者,但是Integer是一个更好的选择(有些人可能不同意,因为整数引入了拳击和拆箱的额外开销),因为它可以处理 null int null将变为0。

来自文档:

  

然而,这里有很多不同的事情。一个   int是一个数字;一个>整数是一个可以引用的指针   包含数字的对象。

     

...

     

int不是对象,不能传递给任何需要的方法   对象。一个常见的情况是使用提供的集合类(   List,Map,Set) - 尽管可以编写这些版本   提供与对象版本类似功能的类。该   经常需要包装类(Integer,Double等)   每当使用内省时(例如在反射API中)。

编辑: - Joshua Bloch的理由也很好:

// Hideously slow program! Can you spot the object creation? public static void main(String[] args) {
    Long sum = 0L;
    for (long i = 0; i < Integer.MAX_VALUE; i++) {
         sum += i;
    }
    System.out.println(sum); } 
  

这个程序得到正确的答案,但由于一个字符,它比它应该慢得多   印刷错误。变量sum被声明为Long而不是   很长,这意味着程序构造大约2 ^ 31不必要   长实例(每次将长i添加到的时间大约为1   长款)。将总和声明从长到长更改会减少   我的机器上的运行时间从43秒到6.8秒。

同时检查此int versus Integer

答案 1 :(得分:3)

盒装类型的性能较差,需要更多内存,基元更快。并避免创建不必要的对象。

Integer是一种不可变类型,一旦你创建了,就不能改变它,占用大量内存并且与int

比较高的偷听

答案 2 :(得分:1)

  

int是一个数字;整数是一个可以引用的指针   包含数字的对象。

  • int是基本类型。如果未设置,则指定的默认值为0.整数是一个可能包含int的对象。如果未设置Integer对象,则默认值为null

  • 如果你可以使用int这样做。如果值可以是null或用作对象,例如Generics,使用整数

答案 3 :(得分:0)

int是一个集合构造。例如,只存在一个“int 10”并且是不可变的。另一方面,整数是包含int字段的完整类,有更多的方法并且很容易使用。

int表示速度,Integer表示多功能性。

答案 4 :(得分:0)

如果你有一个带有int作为参数的方法,你不必进行nullcheck,因为它是一个原始类型。