String类是不可变的,所以一旦创建了String对象,那么它的值无法改变。
当字符串进行修改时候,需要使用到StringBuffer 和StringBuilder类
和String不同的是,StringBuffer 和StringBuilder类的对象能够被多次修改,并且不产生新的未使用的对象。
StringBuilder相对于StringBuffer有速度优势,所以大多数使用StringBuilder类,但是在应用程序要求线程安全的情况下,必须使用StringBuffer类。
public class Test{ public static void main(String args[]){ StringBuffer sBuffer = new StringBuffer("今天"); sBuffer.append("又"); sBuffer.append("下雨"); sBuffer.append("了"); System.out.println(sBuffer); } }
运行结果
今天又下雨了
StringBuffer类支持的主要方法
序号 | 方法 | 描述 |
1 | public StringBuffer append(String s) | 将指定的字符串追加到此字符串序列 |
2 | public StringBuffer reverse() | 将此字符串用其反转形式取代 |
3 | public delete(int start,int end) | 移除此序列中的字符串中的字符 |
4 | public insert(int offset,int i) | 将int参数的字符串表示形式插入此序列中 |
5 | replace(int start,int end,String str) | 使用给定String中的字符替换此序列中的字符串中的字符 |
和String类的方法类似的方法
序号 | 方法 | 描述 |
1 | int capacity() | 返回当前容量 |
2 | char charAt(int undex) | 返回此序列中索引处的char值 |
3 | void ensureCapacity(int minimunCapacity) | 确保容量至少等于指定的最小值 |
4 | void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin) | 将字符从此序列复制到目标字符数组dsc |
5 | int indexOf(String str) | 返回第一次出现的指定字符串在该字符中的索引 |
6 | int lastIndexOf(String str) | 返回最右边出现的指定字符串在此字符串中的索引 |
7 | int length() | 返回长度(字符数) |
8 | void setCharAt(int index,char ch) | 将指定索引处的字符设定为ch |
9 | void setLength(int newLength) | 设置字符序列长度 |
10 | CharSequence subSequence(int start,int end) | 返回一个新的字符序列,该字符序列是此序列的子序列 |
11 | String substring(int start) | 返回一个新的string,他包含此字符序列但前所包含的字符子序列 |
12 | String toString() | 返回此序列中数据的字符串表示形式 |