Java 为一些基本类型提供了它们的 Boxed 版本,例如 int
的 Boxed 版本是 Integer
。同时,Java 允许基本类型与其对应的 Boxed 类型之间的隐式类型转换。然而,这个特性可能严重拖慢程序执行,因此不应被用于科学计算等性能十分关键的场合。
Long count = 0L;
for (long i = 0; i < Integer.MAX_VALUE; i++) {
count += i;
}
在这个程序中,count
被定义为 Long
。这导致在 count += i
时,i
被自动包装 (autobox) 成 Long
。这导致程序变慢,同时可能导致消耗更多的内存空间。
使用文本编辑器,在代码中查找 Integer
、Long
、Boolean
等 Boxed 类型。
除非必要,不要使用 Boxed 类型,直接使用基本类型。
由于基本类型在 Java 中不能作为泛型参数使用,在使用容器时,可能不得不引入 Boxed 类型。此时,如果性能问题过于严重,改用 C++。