一、字符串相关的类
1、String
代表字符串。
String是一个final类,代表不可变的字符序列
字符串是常量,用双引号引起来表示。它们的值在创建之后不能更改
String对象的字符内容是存储在一个字符数组value[]中的。
字符串常量存储在字符串常量池,目的是共享
字符串非常量对象存储在堆中。
字符串对象的存储方式:
结论:
常量与常量的拼接结果在常量池。且常量池中不会存在相同内容的常量。
只要其中有一个是变量,结果就在堆中
如果拼接的结果调用
intern()
方法,返回值就在常量池中
2、String的常用方法
3、StringBuffer类
java.lang.StringBuffer代表可变的字符序列
作为参数传递时,方法内部可以改变值
StringBuffer类不同于String,其对象必须使用构造器生成。有三个构造器:
StringBuffer():初始容量为16的字符串缓冲区
StringBuffer(int size):构造指定容量的字符串缓冲区
StringBuffer(String str):将内容初始化为指定字符串内容
4、StringBuffer类的常用方法
5、StringBuilder类
StringBuilder
和
StringBuffer
非常类似,均代表可变的字符序列,而且
提供相关功能的方法也一样
面试题:对比
String
、
StringBuffer
、
StringBuilder
String(JDK1.0)
:不可变字符序列
StringBuffer(JDK1.0)
:可变字符序列、效率低、线程安全
StringBuilder(JDK 5.0)
:可变字符序列、效率高、
线程不安全
注意:作为参数传递的话,方法内部String
不会改变其值,
StringBuffer
和
StringBuilder会改变其值
参考资料:尚硅谷课件