File tree Expand file tree Collapse file tree 1 file changed +17
-1
lines changed Expand file tree Collapse file tree 1 file changed +17
-1
lines changed Original file line number Diff line number Diff line change @@ -148,15 +148,31 @@ System.out.println(m == n); // true
148148
149149String 被声明为 final,因此它不可被继承。
150150
151- 内部使用 char 数组存储数据,该数组被声明为 final,这意味着 value 数组初始化之后就不能再引用其它数组。并且 String 内部没有改变 value 数组的方法,因此可以保证 String 不可变 。
151+ 在 Java 8 中, String 内部使用 char 数组存储数据 。
152152
153153``` java
154154public final class String
155155 implements java.io. Serializable , Comparable<String > , CharSequence {
156156 /* * The value is used for character storage. */
157157 private final char value[];
158+ }
159+ ```
160+
161+ 在 Java 9 之后,String 类的实现改用 byte 数组存储字符串,同时使用 ` coder ` 来标识使用了哪种编码。
162+
163+ ``` java
164+ public final class String
165+ implements java.io. Serializable , Comparable<String > , CharSequence {
166+ /* * The value is used for character storage. */
167+ private final byte [] value;
168+
169+ /* * The identifier of the encoding used to encode the bytes in {@code value}. */
170+ private final byte coder;
171+ }
158172```
159173
174+ value 数组被声明为 final,这意味着 value 数组初始化之后就不能再引用其它数组。并且 String 内部没有改变 value 数组的方法,因此可以保证 String 不可变。
175+
160176## 不可变的好处
161177
162178** 1. 可以缓存 hash 值**
You can’t perform that action at this time.
0 commit comments