我一直在int
使用for-loop
. 如下所示:
for (int i = 0; i < 100 ; i++) {
//Do something...
}
如果我使用Integer
而不是int
,如下所示,它有什么不同吗?
for (Integer i = 0; i < 100 ; i++) {
//Do something...
}
是的,每次迭代都需要自动拆箱和自动装箱。它会以同样的方式工作,你不需要做任何事情来让它工作,但它是不必要的并且很容易避免。
此外,它可能会稍微减慢循环速度,而没有真正的优势。
基本上Integer
应该只在您实际需要数字时才使用Object
(例如,当您将其放入集合时,何时null
是有效值,......)。在所有其他时间,您应该尽可能使用原始类型(int
, char
, ...)。
int
我假设您已经知道和之间的区别Integer
。
循环的行为相同,int
但当您不需要Integer
. 不要那样做,这会浪费时间(大写“i”并添加“eger”:))。此外,它效率不高,因为每次迭代都会进行自动拆箱/自动装箱。
在int
没有Integer
.
Integer
由于装箱,使用会产生性能成本,所以使用int
.
但是,如果您打算i
在循环体中使用哈希映射键,则使用引用类型Integer
。
唯一重要的事情(虽然我自己不会这样做,也不建议你这样做)我可以考虑在这种情况下使用是
for (Integer i = 0; i < 100 ; i++) {
i = null; // Can do this here but not in the other loop
// Obviously this is not going to be the only line here, unless you wanna get a NPE
// Just something, which you COULD DO
}
除此之外,我真的怀疑它是否重要。虽然使用int
是首选。此外,每次迭代的装箱和自动装箱并不是一件好事(当您可以直接使用时int
)。
由于Java 5 的自动装箱和拆箱功能,它没有。
不,它对功能没有任何影响。自动装箱和自动拆箱功能可帮助您i++
循环使用
不,不会的。Integer
是一个包装器,它为原始int
类型添加了一些功能。如果您不打算使用该功能,最好坚持使用int
.
在这种情况下,它可能不会有太大的不同,但假设你使用 say
Integer[]
而不是int[]
,那么你会浪费很多内存和速度。