StringBuffer
描述:StringBuffer,一种String拼接的改进,其内容可变,具有安全性。
-
构造方法:
- public StringBuffer();
默认无参数,16字节.
- public StringBuffer(int capacity);
指定缓冲区容量大小。
- public StringBuffer(String str);
指定缓冲区字符串内容。
- public int capacity();
返回当前容量,理论值。
- public int length();
返回长度(有效字符数).
- PS:由于有构造方法,显示是class数据类型,所以需要创建对象:
StringBuffer bf = new StringBuffer(); bf.append("testcast"); bf.append(45); PS:狗血的是,1.91报错,1.7JRE正常运行,emm,套路.
-
StringBuffer增删
public static void main(String[] args) { StringBuffer sb = new StringBuffer(); // public StringBuffer append(); sb.append("hello").append(true).append(45).append(12.5); System.out.println("sb:" + sb); // hellotrue4512.5 // public StringBuffer insert(int offset, String) sb.insert(5, "world"); System.out.println("sb: " + sb); // sb: helloworldtrue4512.5 sb.deleteCharAt(1); System.out.println("sb: " + sb); // sb: hlloworldtrue4512.5 // public StringBuffer delete(int start, int end) sb.delete(0, 4); System.out.println("sb: " + sb); // sb: worldtrue4512.5 sb.delete(0, sb.length()); System.out.println("sb: " + sb); }
-
StringBuffer的替换
public class CompareAa { public static void main(String[] args) { StringBuffer sb = new StringBuffer(); sb.append("hello world"); // public synchronized StringBuffer replace(int start, int end, String // str) sb.replace(2, 3, "test"); System.out.println(sb); // hetestlo world }
-
StringBuffer的反转
// public StringBuffer reverse() sb.reverse(); System.out.println(sb); // dlrow oltseteh
-
StringBuffer的截取
// public String StringBuffer (int start); // public String substring(int start, int end); String tempAa = sb.substring(6); System.out.println(tempAa); // oltseteh,丢掉前面start个,剩下的返回。 String tempBa = sb.substring(1, 3); System.out.println(tempBa); // dlrow,获取起止数据。 }
-
StringBuffer与String的转换
// String与StringBuffer转换. String sAa = "test"; // 构造方法实现 StringBuffer sf = new StringBuffer(sAa); System.out.println(sf); // 构造方法实现 String sBb = new String(sf); System.out.println(sBb);
-
StringBuffer改进的拼接
public static String arrayToString(dataType[] arr){ StringBuffer sf = new StringBuffer(); sf.append("["); for(int i = 0;i< arr.length();++i){ if (i == arr.length()-1) sf.append(arr[i]); else{ sf.append(arr[i]).append(",").append(" "); } } sf.append("]"); return sf.toString(); }
package TestAa; public class CompareAa { public static void main(String[] args) { // StringBuffer与String思想拼接一致。 int[] arr = { 44, 33, 55, 22, 11 }; String str = arrayToStringCc(arr); System.out.println("Str: " + str); } public static String arrayToStringCc(int[] arr) { StringBuffer sf = new StringBuffer(); sf.append("["); for (int i = 0; i < arr.length; ++i) { if (i == arr.length - 1) sf.append(arr[i]); else { sf.append(arr[i]).append(",").append(" "); } } sf.append("]"); return sf.toString(); } }
-
StringBuffer的反转
public StringBuffer reverse(); //for example: sf.reverse()
-
StringBuffer&String参数传递
- String作为一种常量,可以视为一种基本的数据类型,函数的使用不会改变原本的值。
- StringBuffer的赋值不会改变原本的数值,而append()会修改原本的值。
package TestAa; public class CompareAa { public static void main(String[] args) { String str1 = "hello"; String str2 = "world"; System.out.println("str1+str2:" + str1 + "----" + str2); Change(str1, str2); System.out.println("str1+str2:" + str1 + "----" + str2); StringBuffer sf1 = new StringBuffer("hello"); StringBuffer sf2 = new StringBuffer("world"); System.out.println("sf1+sf2:" + sf1 + "----" + sf2); Change(sf1, sf2); System.out.println("sf1+sf2:" + sf1 + "----" + sf2); } private static void Change(String s1, String s2) { // TODO Auto-generated method stub s1 = s2; // 两种方式追加并没有区别。 s2 = s1 + s2; //s2.concat(s1); } private static void Change(StringBuffer sf1, StringBuffer sf2) { // TODO Auto-generated method stub sf1 = sf2; sf2.append(sf1); } } /*输出结果为:*/ // str1+str2:hello----world // str1+str2:hello----world // sf1+sf2:hello----world // sf1+sf2:hello----worldworld
- public StringBuffer();