在我的代码中有很多最终值,比如 10000。它们永远不会改变,我对它们什么都不做,只是有时会检查if(number1 == number2).
int使用或Integer这样的数字更好吗?
在您的情况下,使用int.
在一般情况下,如果您处于可以可行地使用原始值几乎总是首选的情况:
Integer- 您必须使用它.equals()来确保您得到了您想要的东西。有关更多详细信息,请参见此处。如今,内存需求已不再是一个问题,但最大的问题是第二个问题,如果您不知道它可能会导致很多错误(特别是因为有些情况下==会按您的预期工作) ,以及其他不会的 - 从这个意义上说,它不是一个“可靠”的错误。)
由于Integers 是对象,因此它们会占用更多内存空间。如果您从不使用Integer方法或其他任何需要它成为对象的东西,那么ints 的内存效率更高,因为int它是一种原始类型。
在宏伟的计划中,考虑到现代计算机有多少内存,这可能并不重要。不过安全无害。
我应该注意,如果您使用==for Integers,您正在检查引用是否相同。对于Integer对象,该equals()方法将是首选。
使用 int,因为它是原始类型。由于内存效率,选择原始类型而不是选择完整的包装对象始终是更好的选择。
int它是还是并不重要Integer。在 java 中,它们可以通过使用autoboxing来互换。
但是,如果您打算将它们存储在一个集合中,它确实会有所不同。集合只接受对象,这意味着您必须使用Integer.
如果您决定使用Integer并想比较它们,请不要使用==. 相反,使用compareTo方法或equals方法。
您正在比较参考,因此最好使用 int。切勿使用“==”来比较 Integer 对象(或 Float、Double、Short、Character、Byte、Long、BigDecimal...)是否相等。比较原始形式的数字——即使用 int、short、long、double。
如果要比较整数,请使用方法 compareTo()。
可以使用int ,必须使用 Integer:
如果这些值可以为空Integer,但您必须使用这些方法compareTo并Equals在它们之间进行比较。
如果您的值不能为空,请使用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
    对于常量使用int,与常量一样,您只需要能够获取它们的值。在这种情况下,所有其他附带的东西Integer都是多余的。
在您需要将整数作为参数传递的情况下,使用它会很方便,Integer因为您可以获得参数值的另一个选项null(即具有无效参数的情况,或合法的无值情况)。