Java - StringBuffer类 - StringBuilder类

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();

	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值