Java基础:StringBuffer类概念、构造函数、常用方法
【摘要】 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)