Merge pull request #695 from jsycdut/patch-1

完善Java包装类型的缓冲池的范围,补充Integer缓冲池的特殊之处
This commit is contained in:
CyC2018 2019-05-08 11:02:47 +08:00 committed by GitHub
commit 41eaf4b637
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -137,13 +137,22 @@ System.out.println(m == n); // true
基本类型对应的缓冲池如下:
- boolean values true and false
- all byte values
- short values between -128 and 127
- int values between -128 and 127
- char in the range \u0000 to \u007F
|基本类型|包装类型|包装类型缓冲池|缓冲池内容|
|:-:|:-:|:-:|:-:|
|boolean|Boolean|无|无|
|byte|Byte|ByteCache|Byte类型数据数值范围[-128, 127]|
|char|Character|CharacterCache|Character类型数据数值范围[0, 127]对应字符内容为整个ASCII码表|
|short|Short|ShortCache|Short类型数据数值范围[-128, 127]|
|int|Integer|IntegerCache|Integer类型数据数值范围默认[-128, 127],最大值可调|
|long|Long|LongCache|Long类型数据数值范围[-128, 127]|
|float|Float|无|无|
|double|Double|无|无|
在使用这些基本类型对应的包装类型时,就可以直接使用缓冲池中的对象。
在使用这些基本类型对应的包装类型时,如果该数值范围在缓冲池范围内,就可以直接使用缓冲池中的对象。
**Integer缓冲池的特殊性**
在jdk1.8所有的数值类缓冲池中Integer的缓冲池IntegerCache很特殊这个缓冲池的下界是-128上界默认是127但是这个上界是可调的在启动jvm的时候通过`-XX:AutoBoxCacheMax=<size>`来指定这个缓冲池的大小该选项在JVM初始化的时候会设定一个名为`java.lang.IntegerCache.high`系统属性然后IntegerCache初始化的时候就会读取该系统属性来决定上界。
[StackOverflow : Differences between new Integer(123), Integer.valueOf(123) and just 123
](https://stackoverflow.com/questions/9030817/differences-between-new-integer123-integer-valueof123-and-just-123)
@ -152,7 +161,7 @@ System.out.println(m == n); // true
## 概览
String 被声明为 final因此它不可被继承。
String 被声明为 final因此它不可被继承。注意所有8种基本类型对应的包装类型全都是由`final`修饰的不可变类)
在 Java 8 中String 内部使用 char 数组存储数据。