java ——StringBuffer与StringBuilder

StringBuffer与StringBuilder:

StringBuffer 系统提供的一个类

StringBuffer:线程安全(耗费资源)的可变字符序列。

StringBuilder(java1.5后出的):线程不安全(不耗费资源)的可变字符序列

	public static void main(String[] args)
	{
//		fun1();
//		fun2();
//		insert();
//		delete();
//		replace();
//		reverse();
//		reverse("fanjunnan");
		fun1();
	}
	public static void fun1() 
	{
		//初始化stringBuff
		StringBuffer sb = new StringBuffer();
		StringBuffer sb1 = new StringBuffer("fanjunnan");
		//打印当前的容量(理论值),传入字符串后,系统并没有使用原来分配的16字符空间,而是另分配了空间
		System.out.println(sb.capacity());
		System.out.println(sb1.capacity());
		//打印一下底层数组的长度(实际值)
		System.out.println(sb.length());
		System.out.println(sb1.length());
		//打印内容
		System.out.println(sb);
		System.out.println(sb1.toString());
		//添加
		sb1 = sb1.append("hehe");
		System.out.println(sb1);
	}
	
	public static void fun2() 
	{
		//添加,可以添加多种类型的数据
		StringBuffer sb = new StringBuffer();
		StringBuffer sb1 =  sb.append("fanjunnan");
		System.out.println(sb1);
		StringBuffer sb2 = sb1.append("HKD");
		StringBuffer sb3 = sb2.append("xiaoFan");
		//打印出来的结果都一样,说明几个变量都是指向的是同一个地址
		//两次sb1的输出结果不一样,说明StringBuff长度是可变的,对StringBuff操作的时候改变的是他的本身
		System.out.println(sb);
		System.out.println(sb1);
		System.out.println(sb2);
		System.out.println(sb3);
		sb.append("fan").append("jun").append("nan");//调用链
		System.out.println(sb);
	}
	//在stringBuff中插入字符或者字符串
	public static void insert() 
	{
		StringBuffer sb1 = new StringBuffer();
//		sb1.setLength(10);//设置stringBuff的长度,一般不会设置,打印的时候不会打印出来,但是对字符串进行操作的时候,还会参加操作的
		System.out.println(sb1);
		StringBuffer sb2 = sb1.insert(0, "fanjunnan");
		System.out.println(sb2);
		StringBuffer sb3 = sb2.insert(2, "heheda");//把这个字符串插入到第二个角标
		System.out.println(sb3);
		sb3.insert(2, "efg");
		System.out.println(sb3);
		sb3.setCharAt(2, 'a');//把索引位置的字符替换掉
		System.out.println(sb3);
		sb3.insert(0, 6);//实际上内部是把int类型的转换成字符串类型然后用字符串插入
		System.out.println(sb3);
	}
	//删除
	public static void delete() 
	{
		StringBuffer sb = new StringBuffer();
//		sb.setLength(10);
		sb.append("fanjunnan");
		sb.insert(0,"hehe");
		//删除一段长度的字符串,留头不留尾
		System.out.println(sb);
		System.out.println(sb.length());
		sb.delete(10, 11);
		//根据索引删除索引位置的字符
//		sb.deleteCharAt(0);
		System.out.println(sb.length());
		System.out.println(sb);
	}
	//替换
	public static void replace() 
	{
		StringBuffer sb = new StringBuffer();
		sb.append("fanjunnan");
		//替换字符串
		sb.replace(6, 11, "yong");
		System.out.println(sb);
		//替换字符
		sb.setCharAt(0, 'F');
		System.out.println(sb);
	}
	//反转
   public static void reverse() 
   {
	StringBuffer sb = new StringBuffer();
	sb.append("fanjunnan");
	sb.reverse();
	System.out.println(sb);
   }
//字符串的反转
   public static void reverse(String string) 
   {
	   //string转stringBuff
	 StringBuffer sb = new StringBuffer(string);
	 sb.reverse();
	 String string2 = new String(sb);
	 System.out.println(string2);
   }
public static void main(String[] args) {
	//1.把int[] array = new int[]{1,2,3,4};输出[1,2,3,4],要求是用string和stringbuff
//	int[] array = new int[] {1,2,3,4};
//	fun1(array);
//	fun2(array);
	String string = "haha";
	//虽然字符串是个对象类型,但是作为参数的时候,和基本数据类型一样,相当于是值的传递,改变不了string原来的地址
	fun3(string);
	System.out.println(string);
	StringBuffer sb = new StringBuffer();
//	StringBuffer是引用数据类型,作为参数相当于是地址的传递,在函数中修改的部分相当于在原对象上进行的操作
	sb.append(string);
	fun4(sb);
    System.out.println(sb);
	}
//stringBuff拼接
public static void fun1(int[] array) 
{
    StringBuffer sb = new StringBuffer();
    sb.append('[');
	for (int i = 0; i < array.length; i++) 
	{
		
		if (i== array.length-1) 
		{
			sb.append(array[i]);
		    sb.append(']');
		}else
		{
			sb.append(array[i]);
		    sb.append(',');
		}
	}
	System.out.println(sb);
}
//字符串拼接
public static void fun2(int[] array)
{
	String string = "[";
	for (int i = 0; i < array.length; i++) 
	{
		if (i == array.length-1) 
		{
			string = string+array[i];
		}
		else
		{
		string = string+array[i]+",";
		}
	}
	string = string+']';
	System.out.println(string);
	StringBuffer sb =new StringBuffer(string);
	System.out.println(sb);
}
/**
 * 字符串和stringBuff当做参数的时候的表现
 * 
 */
public static void fun3(String string) 
{
	string = "fanjunnan";
}
public static void fun4(StringBuffer sb) 
{
	sb.append("fanjunnan");
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值