String、StringBuffer和StringBuilder的区别
String:是被final修饰的,它的长度是不可改变的,通过从concat()、replace()等方法改变并不能真正改变字符串,仅仅是改变了对象的引用而已。
StringBuffer:长度可以改变,它是线性安全的。
StringBuilder:长度可以改变,它是非线性安全的。它的运行速度比StringBuffer更快。
内置方法
- append(String str): 在字符串末尾添加字符串
StringBuffer sBuffer = new StringBuffer("hello");
sBuffer.append(" World,");
sBuffer.append(" this is StringBuffer");
System.out.println(sBuffer); //hello World, this is StringBuffer
- reverse():将此字符串用其反转形式取代
StringBuffer sBuffer = new StringBuffer("你好世界");
sBuffer.reverse();
System.out.println(sBuffer); //你好世界
- delete(int satrt,int end):移除此序列的子字符串中的字符。
StringBuffer sBuffer = new StringBuffer("你好世界");
sBuffer.delete(2,4);
System.out.println(sBuffer); //你好
- insert(int offset,String str):将字符插入到该字符串指定索引之后。
StringBuffer sBuffer = new StringBuffer("你好世界");
sBuffer.insert(2," java ");
System.out.println(sBuffer);
- replace(int start,int end,String str):使用给定的字符替换次序列中子字符串。
StringBuffer sBuffer = new StringBuffer("你好世界");
sBuffer.replace(2,4,"Java");
System.out.println(sBuffer);
- capacity() 返回当前容量
StringBuffer sBuffer = new StringBuffer("你好世界");
System.out.println(sBuffer.capacity()); //20
- charAt(int index) 返回此序列中指定索引处的字符。
StringBuffer sBuffer = new StringBuffer("你好世界");
System.out.println(sBuffer.charAt(2)); //世
- getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 将字符从此序列复制到目标字符数组 dst
StringBuffer sBuffer = new StringBuffer("你好世界");
char[] ch = new char[6];
sBuffer.getChars(2,4,ch,0);
System.out.println(ch); //世界
System.out.println(ch[1]); //世
- indexOf(String str) 返回指定字符的索引值
StringBuffer sBuffer = new StringBuffer("你好世界");
System.out.println(sBuffer.indexOf("好")); //1
- length() 返回字符串长度
StringBuffer sBuffer = new StringBuffer("你好世界");
System.out.println(sBuffer.length()); //
- setCharAt(int index, char ch) 将给定索引处的字符设置为 ch
StringBuffer sBuffer = new StringBuffer("ABCD");
sBuffer.setCharAt(2,'X');
System.out.println(sBuffer); //ABXD
- setLength(int newLength) 设置字符序列的长度。
StringBuffer sBuffer = new StringBuffer("你好世界");
System.out.println(sBuffer.capacity()); //20
sBuffer.setLength(30);
System.out.println(sBuffer.capacity()); //42
- subSequence(int start, int end) 返回一个新的字符序列,该字符序列是此序列的子序列。
StringBuffer sBuffer = new StringBuffer("你好世界");
System.out.println(sBuffer.subSequence(2,4)); //世界
- substring(int start) 截取指定索引处字符串
StringBuffer sBuffer = new StringBuffer("你好世界");
System.out.println(sBuffer.substring(1)); //好世界
- toString() 返回此序列中数据的字符串表示形式。
StringBuffer sBuffer = new StringBuffer("你好世界");
//将StringBuffer对象转换成String
String str = sBuffer.toString();
System.out.println(str); //你好世界