Skip to content

Commit 6106086

Browse files
committed
Update java-basic-questions-01.md
1 parent e7ba062 commit 6106086

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

docs/java/basis/java-basic-questions-01.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -538,13 +538,15 @@ Java 中有 8 种基本数据类型,分别为:
538538
539539
这八种基本类型都有对应的包装类分别为:`Byte`、`Short`、`Integer`、`Long`、`Float`、`Double`、`Character`、`Boolean` 。
540540
541-
### 局部类型和包装类型的区别
541+
### 基本类型和包装类型的区别
542542
543543
- 包装类型不赋值就是 `null` ,而基本类型有默认值且不是 `null`。
544544
- 包装类型可用于泛型,而基本类型不可以。
545-
- 基本数据类型的局部变量存放在 Java 虚拟机栈中的局部变量表中,基本数据类型的成员变量(未被 `static` 修饰 )存放在 Java 虚拟机的堆中。包装类型属于对象类型,我们知道对象实例都存在于堆中
545+
- 基本数据类型的局部变量存放在 Java 虚拟机栈中的局部变量表中,基本数据类型的成员变量(未被 `static` 修饰 )存放在 Java 虚拟机的堆中。包装类型属于对象类型,我们知道几乎所有对象实例都存在于堆中
546546
- 相比于对象类型, 基本数据类型占用的空间非常小。
547547
548+
**为什么说是几乎所有对象实例呢?** 这是因为 HotSpot 虚拟机引入了 JIT 优化之后,会对对象进行逃逸分析,如果发现某一个对象并没有逃逸到方法外部,那么就可能通过标量替换来实现栈上分配,而避免堆上分配内存
549+
548550
⚠️注意 : **基本数据类型存放在栈中是一个常见的误区!** 基本数据类型的成员变量如果没有被 `static` 修饰的话(不建议这么使用,应该要使用基本数据类型对应的包装类型),就存放在堆中。
549551
550552
```java

0 commit comments

Comments
 (0)