Java笔记:String,StringBuilder和StringBuffer
String
1.概述
(1)String 类在 java.lang 包下,所以使用的时候不需要导包
(2)String 类代表字符串,Java 程序中的所有字符串文字(例如“abc”)都被实现为此类的实例也就是说,Java 程序中所有的双引号字符串,都是 String 类的对象
(3)String是final类,不能被其他的类继承
(4)String中有属性 private final char value[]; 用于存放字符串内容,value是一个final类型,不可以修改(value的地址不可修改,但是value数组元素值可以修改)(本质是----final的是数组对象,对象不可以修改,但是对象内容可以修改)
2.String类的构造方法
常用的构造方法
(1)public String()
创建一个空白字符串对象
(2)public String(char[] chs)
根据字符数组内容创建字符对象
(3)public String(String original)
根据传入的字符串内容创建字符串对象
(4)String s = “abc”;
直接赋值的方式创建字符串对象
3.String类的继承关系
(1)实现了serializable接口,String对象可以实现串行化
(2)实现了comparable,String对象可以进行比较
4.注意
String s = “1”+“1”;常量相加,结果在常量池中;
String s = new String(“1”)+“1”,变量相加,结果在堆中。
StringBuilder
1.概述
StringBuilder 是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是 StringBuilder 对象中的内容是可变的,在StringBuilder上的主要操作是append方法。
2.StringBuilder类和String类的区别
- String类:内容是不可变的,但是线程安全;
- StringBuilder类:内容是可变的,它的性能比String更高效,因为它不会像String那样在每次修改时都创建一个新的对象,而是在原有对象的基础上进行修改,不是线程安全的。
3.StringBuilder类的构造方法
(1)public StringBuilder()
创建一个空白可变字符串对象
(2)public StringBuilder(String str)
根据字符串的内容,来创建可变字符串对象
4.StringBuilder和String相互转换
(1)StringBuilder转换为String
public String toString():通过 toString() 就可以实现把 StringBuilder 转换为 String
(2)String转换为StringBuilder
public StringBuilder(String s):通过构造方法就可以实现把 String 转换为 StringBuilder
StringBuffer
1.概述
StringBuffer类,可变字符序列,用于构造字符串对象,内部使用自动扩容的数组来操作字符串数据,StringBuffer类属于java.lang包下。
2.StringBuffer和String的对比
(1)String保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址。
(2)StringBuffer保存的是字符串变量,里面的值可以更改,每次StringBuffer的更新只更新内容,不用每次更新地址。
3.StringBuffer类的构造方法
(1)StringBuffer()
构造一个其中不带字符的字符缓冲区。
(2)StringBuffer(int capacity)
构造一个不带字符,但具有指定初始容量的字符串缓冲区。
(3)StringBuffer(String str)
构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
小结
(1)字符串需要大量修改,一般使用StringBuffer或StringBuilder。
(2)字符串需要大量修改,并在单线程的情况下,使用StringBuilder。
(3)字符串需要大量修改,并在多线程的情况下,使用StringBuilder。
(4)字符串少量修改,使用string。