为什么程序员仍然在 Java 中使用原始类型?
尽管 Java 5 中引入了装箱和拆箱,但许多开发人员继续使用原始类型(如 int)优于其对象对应类型(如 java.lang.Integer)。这种做法回避了为什么会发生这种情况的问题,因为对象类型提供了额外的便利。
正如 Joshua Bloch 的“Effective Java”(第 5 条:“避免创建不必要的对象”)中所述,使用原语可以产生显着的性能优势。在他的代码示例中,使用 Long 对象对 long 求和需要 43 秒,而使用基元将过程加速到 6.8 秒。
导致使用基元的另一个因素是对象类型中缺乏本机值相等性。要确定相等性,必须使用详细的 equals() 方法,这与可用于基元的高效 == 运算符不同。
考虑以下代码片段:
class Biziclop { public static void main(String[] args) { System.out.println(new Integer(5) == new Integer(5)); // false System.out.println(new Integer(500) == new Integer(500)); // false System.out.println(Integer.valueOf(5) == Integer.valueOf(5)); // true System.out.println(Integer.valueOf(500) == Integer.valueOf(500)); // false } }
输出显示不一致new Integer() 和 Integer.valueOf() 之间的值相等。虽然 Java 语言规范 (JLS) 要求缓存至少包含 256 个整数享元 ([-128; 127]),但 JVM 实现者可以扩展此范围。这意味着某些值可能会缓存在某些系统上,但不会缓存在其他系统上,从而导致意外行为。
以上是尽管存在包装类,为什么 Java 程序员仍偏爱原始类型?的详细内容。更多信息请关注PHP中文网其他相关文章!