使用int vs Integer

dev*_*per 55 java int primitive integer

我遇到了一个使用Integer变量的类来捕获要在for循环中使用的大小.这是一个好的做法还是我们应该使用int原始数据类型?

Integer size = something.getFields().size();
for (Integer j = 0; j < size - 1; ++j) 
Run Code Online (Sandbox Code Playgroud)

Mik*_*hon 83

提供了Integer类,以便可以以纯OO方式对值进行装箱/取消装箱.除非您特别需要以OO方式使用它,否则请在适当的地方使用int; 在这种情况下,Integer是合适的.

Java Int vs Integer

然而,这里有很多不同的东西.int是一个数字; an> Integer是一个可以引用包含数字的对象的指针.

...

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

更好地描述何时使用一个与另一个:

在int和Integer之间选择

在详细说明原因之前,我将从如何使用这些类型开始.

  • 喜欢int性能原因
  • 获取对象(包括通用类型List<T>)的方法将隐式地要求使用Integer
  • Integer对于低值(-128到127)使用相对便宜,因为实习 - 使用Integer.valueOf(int)而不是新的整数(int)
  • 不要使用==!=使用整数类型
  • Integer当您需要表示缺少值时,请考虑使用(null)
  • 注意取消装箱整数值为int,其值为null

  • 你回答非常好.请注意使用原始值的移动/资源受限应用程序的性能优势. (3认同)

Pet*_*rey 36

如果你可以使用int这样做.如果值可以null或用作对象,例如泛型,请使用Integer

通常你使用哪一个并不常重要,但往往int表现稍好一些.

  • 在许多情况下,`int`不仅执行***,而且更好,特别是在紧密循环中:) (7认同)

Tom*_*icz 14

这种方法在实践中并不好,int尽可能使用.用法Integer表示这个特定的变量可以null(或者它在一个集合中,该死的泛型......) - 事实并非如此.

另外使用Integer引入了拳击和拆箱的额外开销.


Ewa*_*ald 5

这是大型项目中等待发生的潜在灾难。这里的编码员忘记了每个 Integer 实际上都是一个新对象,要将其用作 int,必须一直进行装箱和拆箱。它不仅效率低下,而且也不会按预期运行。建议您在可能的情况下始终使用 int,并且仅使用 Integer 将这些值放入列表、容器或用于数据库存储。请记住,使用 >、< 和 == 比较对象的含义与使用相同运算符比较基元时不同。