基本类型
Integer
缓存是有使用范围的-128~127
只有在使用valueOf方法是才会使用缓存,如果声明Integer a = 1 底层也是在使用valueOf来做装箱转换,而Integer b = new Integer(1)则不会使用缓存。
**
为什么只对这个范围做缓存?
Long、Short
缓存范围和缓存情形都和Integer一样
但为什么只对这个范围做缓存?
Double、Float
这两个并没有使用缓存
**
字符串
String
本质就是数组,然后使用Arrays的各种工具进行操作处理,没有太多好玩的东西
StringBuilder
本质还是数组
添加的时候如果需要扩容则会新建一个数组,然后使用底层的拷贝工具复制
StringBuffer
使用synchronized实现线程安全
为什么还要搞个缓存?