up md md md md
返回上级
Integer
int 的包装类,让基本类型能进集合、泛型和一切只认对象的场合。核心设计只有两件事:不可变(value 是 final),以及自动装箱走 valueOf 时的 [128, 127] 缓存池,所有 == 陷阱都从这个池子来。
Object
所有类的根父类,定义了 Java 对象的最小契约:身份(getClass / hashCode / equals)、表示(toString)、复制(clone)、以及基于对象监视器的线程协作(wait / notify)。 [HashMap](/articles/sourcecode/java/集合/hashmap/) 的键、synchronized 的锁对
String
String 用不可变性换来三样东西:可以安全共享(常量池、拷贝构造直接共享数组)、可以缓存 hashCode、天然线程安全,所以它敢当 HashMap 的 key。 JDK 9 起存储从 char[] 换成 byte[] + coder 标记(Compact Strings),纯 Latin1 内容每字符只占 1 字节,字符串占大头的堆直接省近一半内存。
StringBuilder
String 不可变,每拼一次就要整份拷贝一次,循环拼接是 O(n2);StringBuilder 在同一块 byte[] 上原地追加、按倍数扩容,把 n 次追加均摊成 O(n)。 StringBuffer 是它加了 synchronized 的兄弟,两者的实现全在共同父类 AbstractStringBuilder 里。 JDK 9 紧凑字符串之后,内部和