前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >StringBuffer类

StringBuffer类

作者头像
Mirror王宇阳
发布2020-11-12 11:19:27
3240
发布2020-11-12 11:19:27
举报
文章被收录于专栏:Mirror的技术成长

java StringBuffer类

String类的特性

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

StringBuffer类

区别:StringBuffer类可以改变字符串中的内容,而String类则无法改变被初始化过的字符串内容(改变的只是String字符串的引用位置)

append()方法

  • public StringBuffer append()
    • 改动字符串中的内容(添加)
代码语言:javascript
复制
public class TestDemo {
	public static void main(String [] args) {
		// StringBuffer类不可以直接赋值实例化,必须new开辟空间
		StringBuffer buf = new StringBuffer();
		// 调用append()方法,向StringBuffer实例化的空间String添加内容
		buf.append("Hello").append("World").append("!") ;
		change(buf) ; // 引用传递
		System.out.println(buf);
	}
	public static void change(StringBuffer temp) {
		temp.append("\n").append("HUAWEI_nb") ;
		// 向 字符串 添加 后续字符串(一个换行和一行字符)
	}
}

通过 StringBuffer 是可以修改的,上述代码则通过 append() 方法来后续添加字符,改变初始后的字符串buf内容

String和StringBuffer类的比较

String类

StringBuffer类

java.lang.Object |--java.lang.String

java.lang.Object |-- java.lang.StringBuffer

public final class Stringextends Objectimplements Serializable, Comparable, CharSequence

public final class StringBufferextends Objectimplements Serializable, CharSequence

通过对两个类的继承结构对比发现,都是同一个 CharSequence 接口的子类

String 转 StringBuffer

代码语言:javascript
复制
public class TestDemo {
	public static void main(String [] args) {
		StringBuffer buf = new StringBuffer("Hello,World!");
		System.out.println(buf);
	}
}
代码语言:javascript
复制
public class TestDemo {
	public static void main(String [] args) {
		StringBuffer buf = new StringBuffer();
        buf = append("Hello,World!");
		System.out.println(buf);
	}
}

StringBuffer 转 String

代码语言:javascript
复制
public class TestDemo {
	public static void main(String [] args) {
		StringBuffer buf = new StringBuffer("Hello,World!");
		String str = buf.toString();
		System.out.println(str);
	}
}

reverse()方法

  • 字符串反转
代码语言:javascript
复制
public class TestDemo {
	public static void main(String [] args) {
		StringBuffer buf = new StringBuffer("Hello,World!");
		System.out.println(buf.reverse());
	}
}

insert()方法

  • 在指定的索引位置增加数据
代码语言:javascript
复制
public class TestDemo {
	public static void main(String [] args) {
		StringBuffer buf = new StringBuffer("Hello,World!");
		buf.insert(0,"China ").insert(5, "Huawei ");
		System.out.println(buf);
	}
}

delete()方法

  • 删除指定的数据
代码语言:javascript
复制
public class TestDemo {
	public static void main(String [] args) {
		StringBuffer buf = new StringBuffer("Hello,World!");
		buf.delete(0,3);
		System.out.println(buf);
	}
}

StringBuilder类

从JDK 1.5以后,增加了新的字符串操作类——StringBuilder

  • 定义结构: public final class StringBuilder extends Object implements Serializable, CharSequence

StringBuffer类和StringBuilder类的定义非常的相似,几乎连类方法也是一样的。

StringBuilder和StringBuffer类的区别

  • String类内容一旦声明则无法改变,而StringBuffer和StringBuilder类可以改变初始内容。
  • StringBuffer中提供的方法都是同步方法,属于安全的线程操作,而StringBuilder类中的方法都属于异步方法(非线程安全操作)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-06-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • java StringBuffer类
    • String类的特性
      • StringBuffer类
        • append()方法
        • String和StringBuffer类的比较
        • String 转 StringBuffer
        • StringBuffer 转 String
        • reverse()方法
        • insert()方法
        • delete()方法
      • StringBuilder类
        • StringBuilder和StringBuffer类的区别
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档