Java基础类库之StringBuffer类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_18948359/article/details/85132625

String 类特点回顾

String 类的特点:

  • String 类的两种实例化方式:
    • 直接赋值:只开辟一块堆内存空间,可以自动入池。
    • 构造方法:开辟两块堆内存空间,不会自动入池,使用 intern() 手工入池。
  • 任何一个字符串都是 String 类的匿名对象
  • 字符串一但声明则不可改变,可以改变的只是 String 类对象的引用。

由于String 类不可以改变的特点,在 Java 中定义了 StringBuffer 类才处理。StringBuffer 类使用 append() 方法进行追加。

StringBuffer 使用

public class TestDemo {
	public static void main(String[] args) {
		StringBuffer buf = new StringBuffer();
		buf.append("Hello").append("\t").append("World");
		// 输出结果:Hello	World
		System.out.println(buf);
	}
}

StringBuffer 与 String 的相互转换

public class StringBufferTest {
	public static void main(String[] args) {
		
		/**	 String 转 StringBuffet	**/
		// 使用构造器
		StringBuffer buf = new StringBuffer("Hello World!");
		System.out.println(buf);

		// append()方法
		StringBuffer buf1 = new StringBuffer("Hello");
		buf.append("\tJava");
		System.out.println(buf1);

		/**	 StringBuffet 转 String	**/
		// 使用 toString() 方法
		StringBuffer buf2 = new StringBuffer("Hello");
		String str = buf2.toString();
		System.out.println(str);
	}
}

StringBuilder 类

StringBuilder 类是从 JDK 1.5 之后新加入的字符串操作类。而我们的 String 与 StringBuffer 是在JDK 1.0 中就存在的。StringBuilder官方链接中可以看到,StringBuffer 与 StringBuilder 类在定义上面特别相似,几乎连方法都一样。

在源码上面,我们可以看到在 StringBuffer 的方法上面加上有 synchronized 关键字,也就说 StringBuffer 是线程同步的。

public synchronized StringBuffer append(StringBuffer sb) {
        toStringCache = null;
        super.append(sb);
        return this;
}

String、StringBuffer、StringBuilder 的区别如下:

  • String 的内容一旦声明则不可以改变,而 StringBuffer 与 StringBuilder 声明的内容是可以改变的。
  • StringBuffer类中提供的方法都是同步方法,属于安全的线程操作,而 StringBuilder 类中的方法都属于异步方法啊,属于非线程安全的方法。

StringBuffer 的常用操作

前面介绍了 StringBuffer,现在介绍下,StringBuffer 常用的操作方法。

StringBuffer 比较的方法

比较的方法:public boolean contentEquals(StringBuffer sb);

public class Demo {
	public static void main(String[] args) {
		StringBuffer buf = new StringBuffer("Hello");
		System.out.println("Hello".contentEquals(buf)); // true 
	}
}

StringBuffer 字符串反转

字符串反转:public StringBuffer reverse();

public class StringBufferTest {
	public static void main(String[] args) {
		StringBuffer buf = new StringBuffer("Hello");
		System.out.println(buf.reverse());  // olleH
	}
}

StringBuffer 指定位置添加数据

指定位置添加数据:public StringBuffered insert(int index,数据类型 变量)

public class StringBufferTest {
	public static void main(String[] args) {
		StringBuffer buf = new StringBuffer("Hello");
		buf.insert(5, " world!").insert(0, "测试学习!");
		System.out.println(buf);	//测试学习!Hello world!
	}
}

StringBuffer 删除部分数据

删除部分数据: public StringBuffer delete(int start ,int end)

public class StringBufferTest {
	public static void main(String[] args) {
		StringBuffer buf = new StringBuffer("Hello World");
		// 注意:输出是有空格的
		System.out.println(buf.delete(0, 5));   // World
	}
}

猜你喜欢

转载自blog.csdn.net/qq_18948359/article/details/85132625