使用int或Integer

时间:2012-06-12 14:12:07

标签: java integer int

在我的代码中有很多最终值,比如10000.它们永远不会改变,我对它们什么都不做,有时像if(number1 == number2)那样检查。

对这些数字使用intInteger是否更好?

7 个答案:

答案 0 :(得分:9)

在您的情况下,请使用int

在一般情况下,如果您处于可行使用的情况,则原始值几乎总是首选:

  • 他们的内存效率可能更高
  • 您可以始终使用==可靠,而不是类Integer类型的情况 - 您必须使用.equals()来确保获得所需内容。有关详细信息,请参阅here

现在内存需求不是一个问题,但是最重要的问题是第二个,如果你不了解它,可能会导致很多错误(特别是因为有{{{ 1}}会像你期望的那样工作,而其他地方也不会工作 - 从那个意义上说它不是一个“可靠”的bug。)

答案 1 :(得分:5)

由于Integer是对象,因此它们在内存中占用更多空间。如果您没有使用Integer方法或其他任何需要它的对象,int的内存效率更高,因为int是基本类型。

在宏观计划中,鉴于现代计算机具有多少内存,这可能无关紧要。尽管如此,没有危害。

我应该注意,如果您对==使用Integer,则会检查引用是否相同。对于Integer个对象,首选equals()方法。

答案 2 :(得分:3)

使用int,因为它是原始类型。由于内存效率选择基本类型而不是选择完整的包装对象,因此总是更好的选择。

答案 3 :(得分:2)

如果它是intInteger并不重要。在java中,通过使用autoboxing,它们可以互换。

如果您计划将它们存储在集合中,它确实会有所不同。集合只接受对象,这意味着您必须使用Integer

如果您决定使用Integer并希望对其进行比较,请不要使用==。相反,请使用compareTo方法或equals方法。

答案 4 :(得分:2)

您正在比较引用,因此最好使用int。 切勿使用“==”来比较Integer对象(或Float,Double,Short,Character,Byte,Long,BigDecimal ......)的相等性。比较原始形式的数字 - 即使用int,short,long,double。

如果要比较整数使用方法compareTo()。

答案 5 :(得分:1)

尽可能使用 int并在必要时使用Integer

如果值为null,请使用Integer,但您必须使用方法compareToEquals进行比较。

如果您的值不能为空,请使用int,这样您就可以使用经典运算符==>=<获得更具可读性的代码,等...

 // int primitive, easy to handle
 int a = 5;
 int b = 5;
 int c = null; // Compile error, can't have null primitive values
 if(a == b) // True
 if(a > b) // False
 if(a >= b) // True

 // Integer, more complicated:
 Integer A = new Integer(5);
 Integer B = new Integer(5);
 Integer c = null; // Work

 if(A == B) // False, they are not the same objects
 if(A.equals(B)) // True, same value

 if(A > B) // Compile error...
 if(A.compareTo(B)>0) // A > B, the int version is more readable
 if(A.compareTo(B)>=0) // A >= B, the int version is more readable

答案 6 :(得分:1)

对于常量使用int,与常量一样,您只需要能够获得它们的值。在这种情况下,Integer附带的所有其他内容都是多余的。

在需要将整数作为参数传递的情况下,使用Integer会很方便,因为您可以获得参数值为null的另一个选项(即参数无效的情况或合法的否则 - 值案例。)