我在互联网上看到不同的代码示例,有些使用int和boolean,其中有些使用Integer和Boolean
我想知道两者的利弊,哪一方是最好的前进方式?
因为原始类型保存在堆栈上并且没有垃圾收集,所以就性能而言,它们肯定是更好的选择吗?
原始v / s托管类型的真正好处是什么?什么是建议的方法?
在我的应用中表现至关重要......
提前致谢
答案 0 :(得分:3)
当您需要对象时,将使用包装器类型。例如:为了能够在集合中存储整数(如List或Set),您需要将原语转换为对象(Integer)。
包装器具有基本类型的另一个特性:它们是可空的。例如,为了表示存储在数据库表的可空列中的整数值,您将使用Integer而不是int来存储空值。
基本上,我的建议是:使用原始类型,除非你不能(例如,出于我刚才解释的原因之一)。
答案 1 :(得分:1)
一般来说,坚持使用int,boolean等,但要注意过多的自动装箱。例如,在紧密循环中确保您没有不必要地包装/展开它们。
Eclipse可以向您发出警告。可能其他IDE也可以这样做。
答案 2 :(得分:1)
UI线程上的任何分配都可能导致性能问题,因为垃圾收集会在此时启动,并且可能(在糟糕的一天)占用屏幕刷新时可见的1/4秒。因此,正如@JB Nizet所说,尽可能使用原语。 Trove原始集合库可以为此提供帮助,但我建议通过pro-guard运行库或您的应用程序以限制库的大小。