Skip to content

Commit 7bb89e7

Browse files
committed
Update Java内存区域.md
1 parent 1d73e6a commit 7bb89e7

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

docs/java/jvm/Java内存区域.md

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -387,8 +387,27 @@ true
387387
388388
### 4.3 8 种基本类型的包装类和常量池
389389
390-
- **Java 基本类型的包装类的大部分都实现了常量池技术,即 Byte,Short,Integer,Long,Character,Boolean;前面 4 种包装类默认创建了数值[-128,127] 的相应类型的缓存数据,Character创建了数值在[0,127]范围的缓存数据。如果超出对应范围仍然会去创建新的对象。** 为啥把缓存设置为[-128,127]区间?([参见issue/461](https://github.com/Snailclimb/JavaGuide/issues/461))性能和资源之间的权衡。
391-
- **两种浮点数类型的包装类 Float,Double 并没有实现常量池技术。**
390+
**Java 基本类型的包装类的大部分都实现了常量池技术,即 Byte,Short,Integer,Long,Character,Boolean;前面 4 种包装类默认创建了数值[-128,127] 的相应类型的缓存数据,Character创建了数值在[0,127]范围的缓存数据,Boolean 直接返回True Or False。如果超出对应范围仍然会去创建新的对象。** 为啥把缓存设置为[-128,127]区间?([参见issue/461](https://github.com/Snailclimb/JavaGuide/issues/461))性能和资源之间的权衡。
391+
392+
```java
393+
public static Boolean valueOf(boolean b) {
394+
return (b ? TRUE : FALSE);
395+
}
396+
```
397+
398+
```java
399+
private static class CharacterCache {
400+
private CharacterCache(){}
401+
402+
static final Character cache[] = new Character[127 + 1];
403+
static {
404+
for (int i = 0; i < cache.length; i++)
405+
cache[i] = new Character((char)i);
406+
}
407+
}
408+
```
409+
410+
两种浮点数类型的包装类 Float,Double 并没有实现常量池技术。**
392411
393412
```java
394413
Integer i1 = 33;

0 commit comments

Comments
 (0)