我一直在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[],那么你会浪费很多内存和速度。