Java 基本类型的包装类的大部分都实现了常量池技术。Byte,Short,Integer,Long 这 4 种包装类默认创建了数值 [-128,127] 的相应类型的缓存数据,Character 创建了数值在[0,127]范围的缓存数据,Boolean 直接返回 True Or False。
两种浮点数类型的包装类 Float,Double 并没有实现常量池技术。
如果超出缓存范围,会去创建新的对象。
Integer i = 40 等价于 Integer i = Integer.valueof(40) ,此处使用常量池
但是超出该缓存范围内的数据不会使用已有数据,而是在堆上创建新对象