android上的原始vs托管类型 - 我应该在我的应用程序中使用哪一个

时间:2011-02-18 13:03:02

标签: java android

我试图将iphone应用程序移植到android。我是java和android环境的新手

我在互联网上看到不同的代码示例,有些使用int和boolean,其中有些使用Integer和Boolean

我想知道两者的利弊,哪一方是最好的前进方式?

因为原始类型保存在堆栈上并且没有垃圾收集,所以就性能而言,它们肯定是更好的选择吗?

原始v / s托管类型的真正好处是什么?什么是建议的方法?

在我的应用中表现至关重要......

提前致谢

3 个答案:

答案 0 :(得分:3)

当您需要对象时,将使用包装器类型。例如:为了能够在集合中存储整数(如List或Set),您需要将原语转换为对象(Integer)。

包装器具有基本类型的另一个特性:它们是可空的。例如,为了表示存储在数据库表的可空列中的整数值,您将使用Integer而不是int来存储空值。

基本上,我的建议是:使用原始类型,除非你不能(例如,出于我刚才解释的原因之一)。

答案 1 :(得分:1)

一般来说,坚持使用int,boolean等,但要注意过多的自动装箱。例如,在紧密循环中确保您没有不必要地包装/展开它们。

Eclipse可以向您发出警告。可能其他IDE也可以这样做。

答案 2 :(得分:1)

UI线程上的任何分配都可能导致性能问题,因为垃圾收集会在此时启动,并且可能(在糟糕的一天)占用屏幕刷新时可见的1/4秒。因此,正如@JB Nizet所说,尽可能使用原语。 Trove原始集合库可以为此提供帮助,但我建议通过pro-guard运行库或您的应用程序以限制库的大小。