在 Java 中,Integer 对象是否应该优先于 int primitive(其他数字类型也是如此)?
In Java, should Integer object be preferred over int primitive (same for other numeric types)?
好的,所以我明白 Integer 只是一个包装器 class。但是我担心的是,避免使用 "wrapper",在使用原始 int 变量时,执行时间可能会有微优化。
我的问题是,Integer 对象真的是我们应该更喜欢使用的对象吗,特别是在需要具有出色性能的程序中(我的意思是,出色,重型,O(N^n) 算法,需要几天的时间)。
此外,double 与 Double、float 与 Float 等的情况相同
您应该更喜欢尽可能使用原语。否则它们就不会存在。 Java 的开发者甚至在开发支持原始类型(IntStream、LongStream、DoubleStream)的流(对于 Java 8)方面付出了额外的努力,因此您不必支付多重装箱的性能损失以及在使用包装器的引用类型流时支付的拆箱费用 类.
包装器仅适用于您别无选择的情况(例如,您不能将基本类型直接放入集合中)。
首选 int
而不是 Integer
除非 null 是一个有效值,否则它将被放入一个集合中。
包装器 class 实例占用更多内存(包装值 + 引用),并生成一些方法调用,其中原始类型仅执行基本操作。但是,某些机制倾向于减少这种开销(例如,如果未使用 new
声明,-128 和 127 之间的 Integer
个实例将保留在池中)。差异可能很小,但是在您可以使用原语的地方,请按照原则简单地进行操作:不要使用提供您需要的更多功能的 classes。
好的,所以我明白 Integer 只是一个包装器 class。但是我担心的是,避免使用 "wrapper",在使用原始 int 变量时,执行时间可能会有微优化。
我的问题是,Integer 对象真的是我们应该更喜欢使用的对象吗,特别是在需要具有出色性能的程序中(我的意思是,出色,重型,O(N^n) 算法,需要几天的时间)。
此外,double 与 Double、float 与 Float 等的情况相同
您应该更喜欢尽可能使用原语。否则它们就不会存在。 Java 的开发者甚至在开发支持原始类型(IntStream、LongStream、DoubleStream)的流(对于 Java 8)方面付出了额外的努力,因此您不必支付多重装箱的性能损失以及在使用包装器的引用类型流时支付的拆箱费用 类.
包装器仅适用于您别无选择的情况(例如,您不能将基本类型直接放入集合中)。
首选 int
而不是 Integer
除非 null 是一个有效值,否则它将被放入一个集合中。
包装器 class 实例占用更多内存(包装值 + 引用),并生成一些方法调用,其中原始类型仅执行基本操作。但是,某些机制倾向于减少这种开销(例如,如果未使用 new
声明,-128 和 127 之间的 Integer
个实例将保留在池中)。差异可能很小,但是在您可以使用原语的地方,请按照原则简单地进行操作:不要使用提供您需要的更多功能的 classes。