基本类型
Integer

缓存是有使用范围的-128~127

只有在使用valueOf方法是才会使用缓存,如果声明Integer a = 1 底层也是在使用valueOf来做装箱转换,而Integer b = new Integer(1)则不会使用缓存。
**
为什么只对这个范围做缓存?
Long、Short



缓存范围和缓存情形都和Integer一样
但为什么只对这个范围做缓存?
Double、Float


这两个并没有使用缓存
**
字符串
String


本质就是数组,然后使用Arrays的各种工具进行操作处理,没有太多好玩的东西
StringBuilder
本质还是数组

添加的时候如果需要扩容则会新建一个数组,然后使用底层的拷贝工具复制


StringBuffer

使用synchronized实现线程安全

为什么还要搞个缓存?
