在Java中基础类型的包装类都是不可变的类,如Boolean、Byte、Character、Double、Float、Integer、Long、Short,另外还有String。
这些类创建的实例都是不可以变的实例。- //Integer类代码 JDK1.8
- public final class Integer extends Number implements Comparable<Integer> {
- private final int value;
- public Integer(int value) {
- this.value = value;
- }
- }
复制代码 可以看到Integer类是final类型的不可被继承,其封装的int值是也是final的。这就导致了实例创建后我们没有其他办法去修改这个int值,所以说Integer对象是不可变对象。
那不可变对象又是如何提高性能的呢,这里看Integer的valueOf方法。
[code] public static Integer valueOf(int i) { if (i >= IntegerCache.low && i |