Java基础 - 常见对象(2) : StringBuffer类

1. 引入

  • 用字符串做拼接,比较耗时并且也耗内存,而这种拼接操作又是比较常见的,为了解决这个问题,Java就提供了一个字符串缓冲区类。StringBuffer供我们使用。

2. StringBuffer的常见功能

  • A. 添加功能

    public StringBuffer append(String str)(在末尾追加) : 把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身

    public StringBuffer insert(int offset , String str)(插入,嵌入) : 在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身

  • B. 删除功能

    public StringBuffer deleteCharAt(int index) : 删除指定位置的字符,并返回本身

    public StringBuffer delete(int start , int end) : 删除从指定位置开始到指定位置结束的内容,并返回本身

  • C. 替换功能

    public StringBuffer replace(int start , int end , String str ) : 从start开始到end用str替换

  • D. 反转功能

/*
 *  public StringBuffer reverse() : StringBuffer的反转功能  
 */
public class StringBufferDemo {
	
	public static void main(String[] args) {
		
		StringBuffer sb = new StringBuffer();
		sb.append("FAW爱我");
		System.out.println(sb);
		sb.reverse();
		System.out.println(sb);
		
	}
}
  • E. 截取功能

    public String substring(int start)

    public String substring(int start,int end)

    注意,截取功能的返回值为String类型

public class StringBufferDemo {
	public static void main(String[] args) {
		
		StringBuffer sb = new StringBuffer();

		
		sb.append("hello").append("world").append("java");
		System.out.println("sb:" + sb);

		
		// public String substring(int start)
		String s = sb.substring(5);
		System.out.println("s:" + s);
		System.out.println("sb:" + sb);

		// public String substring(int start,int end)
		String ss = sb.substring(5, 10);
		System.out.println("ss:" + ss);
		System.out.println("sb:" + sb);
	}
}

3. StringBuffer和String间的相互转换

public class StringBufferTest {
	public static void main(String[] args) {
		
		String s = "hello";
		
		StringBuffer sb = new StringBuffer(s);
		
		StringBuffer sb2 = new StringBuffer();
		sb2.append(s);
		System.out.println("sb:" + sb);
		System.out.println("sb2:" + sb2);
		System.out.println("---------------");

		
		StringBuffer buffer = new StringBuffer("java");
		
		String str = new String(buffer);
		
		String str2 = buffer.toString();
		System.out.println("str:" + str);
		System.out.println("str2:" + str2);
	}
}

4. 字符串反转功能案例

import java.util.Scanner;


public class StringBufferTest3 {
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入需要反转的字符串");
		String s = sc.nextLine();

		
		String s1 = myReverse(s);
		System.out.println("s1:" + s1);
		
		String s2 = myReverse2(s);
		System.out.println("s2:" + s2);
	}

	
	public static String myReverse2(String s) {
//		 StringBuffer sb = new StringBuffer();
//		 sb.append(s);
//
//		// StringBuffer sb = new StringBuffer(s);
//		 sb.reverse();
//		 return sb.toString();
		 return new StringBuffer().append(s).reverse().toString();
		// 链式编程
//		return new StringBuffer(s).reverse().toString(); 
	}

	
	public static String myReverse(String s) {
		String result = "";

		char[] chs = s.toCharArray();
		for (int x = chs.length - 1; x >= 0; x--) {
			// char ch = chs[x];
			// result += ch;
			result += chs[x];
		}

		return result;
	}
}

5. 判断一个字符串是否对称(StringBuffer反转功能)

/*
 * 判断一个字符串是否对称,巧用StringBuffer的反转功能
 */

import java.util.Scanner;


public class StringBufferTest4 {
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入字符串,看其是否对称:");
		String s = sc.nextLine();

	
//		boolean b = isSame(s);
//		System.out.println("b:" + b);
		
		
		boolean b2 = isSame2(s);
		System.out.println("b2:"+b2);
	}
	
	public static boolean isSame2(String s) {
		return new StringBuffer(s).reverse().toString().equalsIgnoreCase(s);
	}
	



//	public static boolean isSame(String s) {
//		boolean flag = true;
//
//		
//		char[] chs = s.toCharArray();
//
//		for (int start = 0, end = chs.length - 1; start <= end; start++, end--) {
//			if (chs[start] != chs[end]) {
//				flag = false;
//				break;
//			}
//		}
//
//		return flag;
//	}
	
}

6. String , StringBuffer , StringBuilder的区别 ?

  • String内容时不可变的,而StringBuffer,StringBuilder都是内容可变的。
  • String和StringBuffer是同步的,数据安全,效率低;StringBuilder是不同步的,数据不安全,效率高

7. StringBuffer和数组的区别 ?

  • 二者都可以看成是一个容器,装其它的数据。
  • StringBuffer的主句最终是一个字符串数据。
  • 数组可以放置多种数据,但必须是同一种数据类型的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值