mirror of
https://github.com/Snailclimb/JavaGuide
synced 2025-06-16 18:10:13 +08:00
commit
45ba979eda
@ -145,7 +145,7 @@ Java 语言通过字节码的方式,在一定程度上解决了传统解释型
|
|||||||
|
|
||||||
### 封装
|
### 封装
|
||||||
|
|
||||||
封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果不想被外界方法,我们大可不必提供方法给外界访问。但是如果一个类没有提供给外界访问的方法,那么这个类也没有什么意义了。
|
封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问。但是如果一个类没有提供给外界访问的方法,那么这个类也没有什么意义了。
|
||||||
|
|
||||||
|
|
||||||
### 继承
|
### 继承
|
||||||
@ -181,9 +181,9 @@ String 中的对象是不可变的,也就可以理解为常量,线程安全
|
|||||||
每次对 String 类型进行改变的时候,都会生成一个新的 String 对象,然后将指针指向新的 String 对象。StringBuffer 每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象并改变对象引用。相同情况下使用 StirngBuilder 相比使用 StringBuffer 仅能获得 10%~15% 左右的性能提升,但却要冒多线程不安全的风险。
|
每次对 String 类型进行改变的时候,都会生成一个新的 String 对象,然后将指针指向新的 String 对象。StringBuffer 每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象并改变对象引用。相同情况下使用 StirngBuilder 相比使用 StringBuffer 仅能获得 10%~15% 左右的性能提升,但却要冒多线程不安全的风险。
|
||||||
|
|
||||||
**对于三者使用的总结:**
|
**对于三者使用的总结:**
|
||||||
如果要操作少量的数据用 = String
|
1. 操作少量的数据 = String
|
||||||
单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
|
2. 单线程操作字符串缓冲区下操作大量数据 = StringBuilder
|
||||||
多线程操作字符串缓冲区 下操作大量数据 = StringBuffer
|
3. 多线程操作字符串缓冲区下操作大量数据 = StringBuffer
|
||||||
|
|
||||||
## 13. 自动装箱与拆箱
|
## 13. 自动装箱与拆箱
|
||||||
**装箱**:将基本类型用它们对应的引用类型包装起来;
|
**装箱**:将基本类型用它们对应的引用类型包装起来;
|
||||||
@ -244,7 +244,7 @@ new运算符,new创建对象实例(对象实例在堆内存中),对象
|
|||||||
|
|
||||||
## 24. 对象的相等与指向他们的引用相等,两者有什么不同?
|
## 24. 对象的相等与指向他们的引用相等,两者有什么不同?
|
||||||
|
|
||||||
对象的相等 比的是内存中存放的内容是否相等而引用相等 比较的是他们指向的内存地址是否相等。
|
对象的相等,比的是内存中存放的内容是否相等。而引用相等,比较的是他们指向的内存地址是否相等。
|
||||||
|
|
||||||
## 25. 在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?
|
## 25. 在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user