字符串类型有三个主要的类型String、StringBuffer、StringBuilder,今天来简单说一下他们三者的相同与不同。
简单概括一下,对于StringBuffer和StringBuilder来说,String是不可变的字符序列,而它们两个是可变的。其中StringBuffer是线程安全的,速度较慢,StringBuffer是线程不安全的,速度较快。对于使用产生的结果来说这两个类没有区别。
String类
1、 性质: String对象一旦被创建,内容则固定不变,不可更改。
String str = "hello";
str = "helloworld";
编译器不会报错,但是不代表String引用的对象被改变,因为hello字符串仍然在内存中存在,只是str对象没有指向它,helloworld也在内存中的其他地方存储。
2、 创建方法:
(1)String str = "oralce";
(2) String str = new String("oralce");
这两种创建方法的区别是: (1) 这种方法再申请一个str1 = "oralce"时,str和str1会指向同一个oralce
(2)这种发法则不会指向同一个,是两个不同地址的oralce
3、 常用方法:
(1) int indexOf(char ch) //查找ch字符在该字符串中第一次出现的位置
(2)int indexOf(String str) //查找str字符串...
4、 字符串连接:
(1) 字符串 + 字符串 = 字符串
(2) 字符串 + 其他类型 = 字符串 name + 10 + 20 = xiaoming1020
(3) 其他类型 + 字符串 = 数字 + 字符串 = 字符串 10 + 4.5 + name = 14.5xiaoming
StringBuffer
1、 性质: 可变字符序列,类似于String的字符串缓冲区,是线程安全的。
2、 构造方法:
(1) public StringBuffer() //建立一个空缓冲区,初始容量16字节
(2) public StringBuffer(int length) //建立一个初始容量为length的缓冲区
(3) public StringBuffer(String str) //缓冲区初始内容为str,并提供16字节的初始容量
3、 与String类型对比:
StringBuffer 使用方法都可以改变缓冲区内字符串内容。
String 重写了equals方法, StringBuffer没有方法重写。
String 可用 + 连接,StringBuffer 不能用 + 连接
StringBuilder
1、 性质:
字符序列,用于单线程,不保证同步,是线程不安全的,但是性能好(常用)。
2、 常用方法:
(1)stringBuilderAppend(); //追加内容
(2)stringBuilderInsert();
(3)stringToString(); //将StringBuilder对象转换为String对象
(4)intLength();
3、 区别:
String 重写了equals方法, StringBuilder也没有方法重写。