Java——StringBuffer类的一些常用方法与例子

38 篇文章 1 订阅

StringBuffer:是一个类似于String的字符串的缓冲区,但不能修改,不过,可以通过调用某些方法改变序列的长度和内容
     StringBuffer与String的区别:
         String是一个不可变的字符序列
         StringBuffer是一个可变的字符序列
     构造方法:
         public StringBuffer();                无参构造方法
         public StringBuffer(int capacity);    制定容量的字符串缓冲区对象    
         public StringBuffer(String str);    指定字符串内容的字符串缓冲区对象
     
     方法:
         public int capacity();                返回当前容量
         public int length();                返回长度(字符数)
     
     添加功能:
         public StringBuffer append(String str);    是一个重载的方法,可以把任意类型数据添加到字符串缓冲区里面,并返回字符串            缓冲区本身
         public StringBuffer append(int offset,String str);也是一个重载的方法,在指定位置把任意类型的数据插入到字符串缓冲区里          面,并返回字符串缓冲区本身
         StringBuffer是字符串缓冲区,当new的时候是在堆内存创建了一个对象,当调用添加的方法时,不会再重新创建对象,                 在不断向原缓冲区添加字符
     
     删除功能:
         public StringBuffer deleteCharAt(int index);        删除指定位置的字符,并返回本身
         public StringBuffer delete(int start,int end);        删除从指定位置开始到指定位置结束的内容,并返回本身
         
     替换和反转功能:
         public StringBuffer replace(int start,int end,String str);    从start到end用str替换
         public StringBuffer reverse();                        字符串反转
         
     截取功能:
         public String substring(int start);            从指定位置截取到末尾
         public String substring(int start,int end);    截取从指定位置开始到结束位置,包含start,不包含end
             返回值类型是String,而不是StringBuffer
         
     StringBuffer和String的相互转换
         String——StringBuffer
             1.通过构造方法
             2.通过append()方法
         StringBuffer——String
             1.通过构造方法
             2.通过toString()方法
             3.通过subString(0,length)
 
 当基本数据类型的值传递时,不改变其值;引用数据类型的值传递时,改变其值。
 但是String类虽然是引用数据类型,但是它当作参数传递时和基本数据类型一样。
 而StringBuffer传递时,能改变其值

 

package pra_07;

import java.util.Scanner;

public class J_13 {
	public static void main(String[] args) {
		
		StringBuffer sbs=new StringBuffer();
		System.out.println(sbs.length());
		System.out.println(sbs.capacity());		//16
	
		StringBuffer sbs2=new StringBuffer(10);
		System.out.println(sbs2.length());
		System.out.println(sbs2.capacity());	//10
		
		StringBuffer sbs3=new StringBuffer("abcdefgh");
		System.out.println(sbs3.length());		//8
		System.out.println(sbs3.capacity());	//16+8	初始容量+字符串length
		
		//添加功能
		StringBuffer sbs4=new StringBuffer();
		sbs4.append("ijklmnopq");
		System.out.println(sbs4.toString());  //ijklmnopq,不用再new对象,重写了toString方法,显示了对象属性值
		sbs4.insert(2,"rstuvw");			//如果没有指定位置的索引就会报索引越界异常
		System.out.println(sbs4.toString()); 	//ijrstuvwklmnopq
		
		//删除功能
		StringBuffer sbs5=new StringBuffer();
		sbs5.append("abcdefg");
		sbs5.deleteCharAt(5);
		System.out.println(sbs5.toString());				//abcdeg
		sbs5.delete(0, 2);
		System.out.println(sbs5.toString()); 				//cdeg,删除时,包含头不包含尾
		sbs5.delete(0,sbs5.length());			//清空缓存区
		
		//替换和反转功能
		StringBuffer sbs6=new StringBuffer();
		sbs6.append("qwerty");
		sbs6.replace(0, 5, "aaaaaaaa");
		System.out.println(sbs6.toString());	//aaaaaaaay
		sbs6.reverse();
		System.out.println(sbs6.toString()); 	//yaaaaaaaa
		
		//截取功能
		StringBuffer sbs7=new StringBuffer();
		sbs7.append("icanfly");
		String str=sbs7.substring(4);
		System.out.println(str);			//fly,包含头,sbs7不变
		String str2=sbs7.substring(0, 4);		
		System.out.println(str2);  			//ican,包含头不包含尾
		
		//StringBuffer和String的相互转换
			//String——StringBuffer
		StringBuffer sbs8=new StringBuffer("qwer");  //通过构造方法将字符串转换成StringBuffer
		System.out.println(sbs8);
		sbs8.append("asdf");				//通过append方法将字符串转换成StringBuffer
			//StringBuffer——String
		StringBuffer sbs9=new StringBuffer("mnbvc");
		String s9=new String(sbs9);	
		String s10=sbs9.toString();
		String s11=sbs9.substring(0,sbs9.length());
		System.out.println(s9);
		System.out.println(s10);
		System.out.println(s11);
		
		//把数组转换成字符串
		int[] arr={1,2,3,4};
		StringBuffer sbs10=new StringBuffer();
		sbs10.append("[");
		for (int i = 0; i < arr.length; i++) {
			sbs10.append(arr[i]+",");
		}
		sbs10.append("]");
		System.out.println(sbs10.toString());
		
		//字符串反转
		Scanner sc=new Scanner(System.in);
		String str12=sc.nextLine();
		StringBuffer sbs12=new StringBuffer(str12);
		sbs12.reverse();
		System.out.println(sbs12);
	
	}
}

 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值