StringBuffer是一个线程安全的可变字符序列(StringBuffer不是字符串,里面装的是一个由字符组成的字符串)。又叫字符串缓冲区,可以改变长度和内容的容器。默认初始容量为 16 个字符。可以自定义初始化容器大小。(容器是用来储存数据的,当数据多的时候就要用容器来装)
public static void main(String[] args){
StringBuffer sb = new StringBuffer();//sb是一个初始化的容器对象
StringBuffer sb1 = sb.append("abc");//sb1往这个容器添加"abc",返回的还是这个容器,sb和sb1指向同一个容器
System.out.println(sb.toString()+sb1.toString());//abcabc
System.out.println(sb == sb1);//true
String s1 = "";
String s2 = s1 + "abc";
System.out.println("s1=" + s1.toString() + ",s2=" +s2.toString());//s1=,s2=abc
System.out.println(s1 == s2);//false
}
|-- 添加
|-- StringBuffer append(date)----------------可以添加任意基本数据类型。(顺序追加)
|-- StringBuffer insert(index,date)----------容器内的字符串的指定索引后添加数据
|--删除
|-- StringBuffer delete(int start,int end)-------包含 start 不包含 end
|-- StringBuffer deleteCharAt(int index)---------删除指定索引字符
|--查找
|-- 和字符串获取的方法一样。
|-- indexOf()。。。。。
|--修改
|-- StringBuffer replace(int strat,int end,String str)---替换,包含 start 不包含 end
|-- void setCharAt(int index,char ch)--------------------修改指定索引字符
|-- void setLength()---设计长度
StringBuilder 和 StringBuffer 兼容的 API ,但不保证同步。用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比StringBuffer
要快。
package string.demo;
public class StringDemo {
public static void main(String[] args) {
int[] i = { 12, 215, 2214, 4646, 454 };
System.out.println(arrayToSring(i));// 将一个int数组转换成字符串
String[] s = { "abc", "dsdasd", "csdsdf", "asgfhf", "effvcbd" };
printArray(s);// 打印数组s
stringSort(s);// 对s进行排序
System.out.println();// 换行
printArray(s);// 打印排序好的s
String str = "efabcabcjdabcabceabckiabclabcoiu";
System.out.println(repeatStringCount(str, "abc"));
String str2 = "abcdefgh";
String str3 = "ijklmn";
System.out.println(maxSameString(str2, str3));
String str4 = " da ssd asadasad ";
System.out.println("--"+myTrim(str4)+"--");
}
/**
* 需求:模拟trim方法。 实现: 遍历字符串,返回
*
* @param str4要去除空格的字符串
* @return 去除左右空格的字符串
*/
private static String myTrim(String str4) {
int start = 0;
int end = str4.length() - 1;
while (start < end && str4.charAt(start) == ' ') {
start++;
}
while (start < end && str4.charAt(end) == ' ') {
end--;
}
return str4.substring(start, end + 1);
}
/**
* 需求:计算出两个字符串最大相同的子串 实现: 1.先判断两个字符串的长度。 2.拿最小的字符串作为参展进行比较 3.不断减小它的长度进行比较,
*
* @param str2
* 一个要进行比较的字符串
* @param str3一个要进行比较的字符串
* @return 返回最大相同的子串
*/
private static String maxSameString(String str2, String str3) {
String maxStr, minStr, subStr = "";
if (str2.length() > str3.length()) {
maxStr = str2;
minStr = str3;
} else {
maxStr = str3;
minStr = str2;
}
// abc
// maxStr.indexOf(minStr.substring(0, 3));
//
// maxStr.indexOf(minStr.substring(0, 2));
// maxStr.indexOf(minStr.substring(1, 3));
//
// maxStr.indexOf(minStr.substring(0, 1));
// maxStr.indexOf(minStr.substring(1, 2));
// maxStr.indexOf(minStr.substring(2, 3));
// 外循环控制长度,内循环控制,起始索引。
for (int i = 0; i < minStr.length(); i++) {
for (int a = 0, b = minStr.length() - i; b <= minStr.length(); a++, b++) {
subStr = minStr.substring(a, b);
if (maxStr.contains(subStr))
return subStr;
}
}
return "没有找到";
}
/**
* 计算一个子串在整串中出现的次数 实现: 1.要有一个记录次数的计数器,每找到子串记录一次 2.获取子串在整串中第一次出现的索引,
* 3.从第一次出现的索引加上子串的长度,继续搜索。
*
* @param str
* 要索引的字符串
* @param str2
* 子串
*
*/
private static int repeatStringCount(String str, String str2) {
int count = 0;
int start = count;
int subindex;
int subLenght = str2.length();
while ((subindex = str.indexOf(str2, start)) != -1) {
count++;
start = subindex + subLenght;
}
return count;
}
/**
*
* 打印一个数组
*
*/
private static void printArray(String[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
/**
*
* 给定一个字符串数组,按照字典顺序从小到大排序 实现: 1.和数组排序一样。
*
*/
private static String[] stringSort(String[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (arr[i].compareTo(arr[j]) > 0) {
String temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
/**
*
* 需求:将一个int数组转换成字符串 实现: 1.创建一个StringBuilder容器来存放数据
* 2.遍历int数组,把int数组的每个元素都添加到容器里 3.返回一个字符串
*
* */
private static String arrayToSring(int[] arr) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
if (i < arr.length - 1)
sb = sb.append(arr[i] + ",");
else
sb = sb.append(arr[i]);
}
return sb.toString();
}
}