File tree Expand file tree Collapse file tree 1 file changed +17
-5
lines changed Expand file tree Collapse file tree 1 file changed +17
-5
lines changed Original file line number Diff line number Diff line change 1
-
2
1
<!-- MarkdownTOC -->
3
2
4
3
- [ 1. 面向对象和面向过程的区别] ( #1-面向对象和面向过程的区别 )
@@ -168,8 +167,23 @@ Java 语言通过字节码的方式,在一定程度上解决了传统解释型
168
167
** 可变性**
169
168
170
169
171
- String 类中使用字符数组保存字符串,private final char value[ ] ,所以 String 对象是不可变的。StringBuilder 与 StringBuffer 都继承自AbstractStringBuilder 类,在 AbstractStringBuilder 中也是使用字符数组保存字符串,char[ ] value,这两种对象都是可变的。
172
-
170
+ 简单的来说:String 类中使用 final 关键字字符数组保存字符串,` private final char value[] ` ,所以 String 对象是不可变的。而StringBuilder 与 StringBuffer 都继承自 AbstractStringBuilder 类,在 AbstractStringBuilder 中也是使用字符数组保存字符串` char[]value ` 但是没有用 final 关键字修饰,所以这两种对象都是可变的。
171
+
172
+ StringBuilder 与 StringBuffer 的构造方法都是调用父类构造方法也就是 AbstractStringBuilder 实现的,大家可以自行查阅源码。
173
+
174
+ AbstractStringBuilder.java
175
+
176
+ ``` java
177
+ abstract class AbstractStringBuilder implements Appendable , CharSequence {
178
+ char [] value;
179
+ int count;
180
+ AbstractStringBuilder () {
181
+ }
182
+ AbstractStringBuilder (int capacity ) {
183
+ value = new char [capacity];
184
+ }
185
+ ```
186
+
173
187
174
188
** 线程安全性**
175
189
@@ -379,5 +393,3 @@ final关键字主要用在三个地方:变量、方法、类。
379
393
这本书要常读,初学者可以快速概览,中等程序员可以深入看看 Java,老鸟还可以用之回顾 Java 的体系。这本书之所以厉害,因为它在无形中整合了设计模式,这本书之所以难读,也恰恰在于他对设计模式的整合是无形的。
380
394
381
395
382
-
383
-
You can’t perform that action at this time.
0 commit comments