String,内存剖析,常用方法_听韩顺平课笔记
1.String结构剖析
String类的理解和创建对象
- 使用Unicode编码,一个字符占两个字节
- String有很多构造器,构造器的重载
- String是final类,不能被其他的类继承
- String有属性private final char value[];用于存放字符串内容,所以String的底层是个char数组
- value[]是一个final属性,是不可修改的(地址不可修改,指向新地址),但是单个字符内容是可以变化的


String的继承关系:
- 实现了Serializable,说明String可以串行话,用于网络传输
- 实现了Comparable,说明String对象可以比较

String的地址不可变性的证明:
- 单独的内容的改变时允许的
- 但不允许改变地址空间

String的八点特性:

2.String创建剖析
String的创建方式(两种):

两种创建String对象的区别:

两种创建String对象的区别(内存分析图):

练习题1:

练习题2:

3.String测试题1
练习题3:T,F,T,F

intern()方法解析:

练习题4:

4.String测试题2
练习题5:做错了,答案:T,T,T,F

5.String对象特性1
习题1:

习题1解:
- 创建一个对象"hello"
- 在常量池中查看是否有"haha"对象,没有则创建,将s1指向"haha"

习题2:

习题2答案:

习题3:

习题3思路分析,追源码(重点):

习题3内存布局图:

验证习题3答案:输出false
- c指向堆中,d指向池中

习题3小结:
- 字符串常量相加,看的是池
- 字符串变量相加,看的是堆

6.String对象特性2
练习题1:

练习题2:
- 方法调用,开辟新栈,使用完毕后销毁,
- char数组在堆中,其中的内容被修改了

练习2内存分析:

7.String常用方法1
String是保存字符串常量的,每次跟新都需要重新开辟空间,效率较低

String类的常用方法一览:

String类的常用方法应用实例1:


8.String常用方法2
String类的常用方法应用实例2:


9.String常用方法3
format方法详解:


浙公网安备 33010602011771号