String是不可变类,一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。
StringBuffer对象则代表一个字符序列可变的字符串,当一个StringBuffer被创建以后,通过StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串对象的字符序列。一旦通过StringBuffer生成了最终想要的字符串,就可以调用它的toString()方法将其转化为一个String对象。
StringBuilder和StringBuffer基本相似,不同的是StringBuffer是线程安全的,而StringBuilder没有实现线程安全功能,所以性能略高,在通常情况下可优先考虑使用。
String类提供了大量构造器来创建String对象,其中如下几个有特殊用途。
String类也提供了大量方法来操作字符串对象,下面详细介绍这些常用方法。
- charAt(int index) :获取字符串中指定位置的字符,其中参数index从0开始到length() - 1
- int compareTo(String anotherString) :比较两个字符串的大小。如果两个字符串的字符序列相等,则返回0;不相等时,从两个字符串的第0个字符开始比较,返回第一个不相等的字符差。另一种情况,较长字符串的前面部分恰巧是较短的字符串,则返回它们的长度差
- String concat(String str):将该对象与str连接在一起。与Java提供的字符串连接运算符" + "的功能相同
- byte[] getBytes() :将此String对象转换成byte数组
- void gerChars(int srcBegin, int srcEnd, char[] dst,int dstBegin):将字符串中从srcBegin开始,到srcEnd结束的字符复制到dst字符数组中,其中dstBegin为目标字符数组的起始复制位置
- char[] toCharArray():将此String对象转换成char数组
- String replace(char oldChar, char newChar):将字符串中的第一个oldChar替换成newChar
StringBuilder提供了一系列插入、追加、改变该字符串里包含的字符序列的方法。
- StringBuilder append(String str) :在该StringBuilder后追加字符串str
- StringBuilder insert(int offset, String str) :从该StringBuilder的offset位置开始,将字符串str插入
- StringBuilder replace(int start, int end, String str) :将该StringBuilder由start开始到end前(前闭后开)的字符序列换成str