Java基础:StringBuffer类概念、构造函数、常用方法

举报
wljslmz 发表于 2022/12/29 09:59:59 2022/12/29
1.2k+ 0 0
【摘要】 StringBuffer 是一个可变的、最终的和同步的(线程安全的)Java 类,它在 JDK 1.0 版本中引入并且在 java.lang 包中可用。StringBuffer 类用于创建一个可变的 String 对象(该对象一旦创建就可以更改)。StringBuffer 类似于 String 类,除了一个主要区别:StringBuffer 是可变的,而 String 是不可变的(对象一旦创...

StringBuffer 是一个可变的、最终的和同步的(线程安全的)Java 类,它在 JDK 1.0 版本中引入并且在 java.lang 包中可用。

StringBuffer 类用于创建一个可变的 String 对象(该对象一旦创建就可以更改)。StringBuffer 类似于 String 类,除了一个主要区别:StringBuffer 是可变的,而 String 是不可变的(对象一旦创建就不能更改)。

StringBuffer 类是线程安全的,这意味着任何时候多个线程都不能同时访问它。所以它是安全的并且会导致有序,但是实现同步机制对于 JVM 来说需要一些时间,这就是StringBuffer 比StringBuilder慢一点的原因。

StringBuffer 类的构造函数

1.StringBuffer():通过不重新分配空间节省了 16 个字符。

StringBuffer s = new StringBuffer();

2.StringBuffer(int size):它接受指定缓冲区大小的整数参数。

StringBuffer s = new StringBuffer(20);

3.StringBuffer(String str): 它采用一个字符串参数来设置StringBuffer 对象的初始内容,并在不重新分配空间的情况下为另外16 个字符释放空间。

StringBuffer s = new StringBuffer("studentscoding");

StringBuffer 类常用方法

获取和设置 StringBuffer 的长度和容量

StringBuffer 类提供了 length() 方法来查找 StringBuffer 对象中文本的长度,capacity() 方法来识别为文本分配的内存空间量,使用 setLength() 方法可以设置 StringBuffer 对象中文本的长度。

StringBuffer javaRoad = new StringBuffer("I am JavaRoads");
System.out.println("length = " + javaRoad.length());
System.out.println("capacity = " + javaRoad.capacity());
javaRoad.setLength(20);
System.out.println("length = " + javaRoad.length());
System.out.println("设置后的长度 = " + javaRoad);

设置字符

要读取 StringBuffer 对象中的字符,可以像使用 String 对象一样使用 charAt() 和 getChars() 方法。但是,在 StringBuffer 对象中,您还可以使用 setCharAt() 方法设置单个字符。

StringBuffer javaRoad = new StringBuffer("I am JavaRoads");
javaRoad.setCharAt(8, 's');
System.out.println("setCharAt = " + javaRoad);

追加和插入

可以使用 append() 方法将字符串追加到 StringBuffer 对象中的文本,也可以使用 insert() 方法在特定位置插入文本。

StringBuffer javaRoad = new StringBuffer("I am JavaRoads");
javaRoad.append("hello,");
javaRoad.append("world");
System.out.println("append = " + javaRoad);
javaRoad.insert(23,",haha");
System.out.println("insert = " + javaRoad);

删除文本

StringBuffer javaRoad = new StringBuffer("I am JavaRoads");
javaRoad.delete(16, 20);
System.out.println("delete = " + javaRoad);

替换文本

只需指定一个字符范围和应该替换该范围的新文本:

StringBuffer javaRoad = new StringBuffer("I am JavaRoads");
javaRoad.replace(16, 20," hello world");
System.out.println("replace = " + javaRoad);

StringBuffer总结

Java 中的 StringBuffer 提供了 String 类的大部分功能,但有一个明显的区别,即 StringBuffer 是可变的。

StringBuffer 也是线程安全的,因此 StringBuffer 对象可以被多个线程安全地使用,必要时同步 StringBuffer 类的方法。

每个 StringBuffer 都是用容量创建的,只要字符串缓冲区中包含的字符序列长度不超过容量,就不需要分配新的内部缓冲区数组。如果内部缓冲区溢出,它会自动变大。

Java 5 之后还提供了 StringBuilder 类,它等同于 StringBuffer 类,但专为单线程使用而设计,StringBuilder 更快,因为它不执行同步。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。