StringBuffer的使用

本文详细介绍了StringBuffer类的使用方法,包括构造方法、增删改查操作、反转、截取及与String类型的转换。通过实例演示了StringBuffer在字符串拼接上的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
      
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值