1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-08-01 16:28:03 +08:00

Update Java基础知识.md

This commit is contained in:
guide 2021-01-18 19:53:11 +08:00
parent 9f639bf093
commit 348270b5fc

View File

@ -1008,9 +1008,11 @@ public class Student {
#### 2.5.1. String StringBuffer 和 StringBuilder 的区别是什么? String 为什么是不可变的? #### 2.5.1. String StringBuffer 和 StringBuilder 的区别是什么? String 为什么是不可变的?
**可变性**
简单的来说:`String` 类中使用 final 关键字修饰字符数组来保存字符串,`private final char value[]`,所以`String` 对象是不可变的。 简单的来说:`String` 类中使用 final 关键字修饰字符数组来保存字符串,`private final char value[]`,所以`String` 对象是不可变的。
> 补充(来自[issue 675](https://github.com/Snailclimb/JavaGuide/issues/675)):在 Java 9 之后String 的实现改用 byte 数组存储字符串 `private final byte[] value`; > 补充(来自[issue 675](https://github.com/Snailclimb/JavaGuide/issues/675)):在 Java 9 之后String `StringBuilder``StringBuffer` 的实现改用 byte 数组存储字符串 `private final byte[] value`
`StringBuilder``StringBuffer` 都继承自 `AbstractStringBuilder` 类,在 `AbstractStringBuilder` 中也是使用字符数组保存字符串`char[]value` 但是没有用 `final` 关键字修饰,所以这两种对象都是可变的。 `StringBuilder``StringBuffer` 都继承自 `AbstractStringBuilder` 类,在 `AbstractStringBuilder` 中也是使用字符数组保存字符串`char[]value` 但是没有用 `final` 关键字修饰,所以这两种对象都是可变的。