字符串缓冲区 是一个同龄人的班级 一串 这提供了字符串的大部分功能。字符串表示固定长度、不可变的字符序列,而StringBuffer表示可增长和可写的字符序列。 字符串缓冲区 可以将字符和子串插入中间或追加到结尾。信息技术 将自动增长以为此类添加腾出空间,并且通常预分配的字符数比实际需要的字符数多,从而为增长留出空间。
关于StringBuffer类的一些有趣的事实
一定要进去 申请so时,mi的背面如下所示:
- JAVAlang.StringBuffer扩展(或继承自) 对象类 .
- StringBuffer类的所有实现接口:Serializable、Appendable、CharSequence。
- 公共最终类StringBuffer extends对象实现可序列化、CharSequence和可追加。
- 多线程使用字符串缓冲区是安全的。这些方法可以在任何必要的地方进行同步,这样,任何特定实例上的所有操作都可以按照某种顺序进行。
- 每当发生涉及源序列的操作(例如从源序列追加或插入)时,此类仅在执行该操作的字符串缓冲区上同步,而不是在源上同步。
- 它从对象类继承了一些方法,比如 clone()、equals()、finalize()、getClass()、hashCode()、, 通知 ,notifyAll()。
记得: 字符串拼接 , J2SE 5为Java已经强大的字符串处理功能添加了一个新的字符串类。这个新类叫做StringBuilder。它与StringBuffer相同,只是有一个重要区别:它不同步,这意味着它不是线程安全的。StringBuilder的优点是性能更快。但是,在使用多线程的情况下,必须使用StringBuffer而不是StringBuilder。
StringBuffer类的构造函数
1.StringBuffer() :它保留了16个字符的空间,无需重新分配
StringBuffer s = new StringBuffer();
2. StringBuffer(整数大小) :它接受一个整数参数,该参数显式设置缓冲区的大小。
StringBuffer s = new StringBuffer(20);
3. StringBuffer(字符串str): 它接受一个字符串 参数,该参数设置StringBuffer对象的初始内容,并在不重新分配的情况下为16个字符保留空间。
StringBuffer s = new StringBuffer("GeeksforGeeks");
StringBuffer类的方法
方法 | 执行的动作 |
---|---|
附加() | 用于在现有文本末尾添加文本。 |
长度() | StringBuffer的长度可以通过length()方法找到 |
容量() | 总分配容量可以通过capacity()方法找到 |
查拉特() | |
删除() | 从调用对象中删除一系列字符 |
删除字符() | 删除指定索引处的字符 loc |
保证能力 | 确保容量至少等于给定的最小值。 |
插入() | 在指定的索引位置插入文本 |
长度() | 返回字符串的长度 |
反向 | 反转StringBuffer对象中的字符 |
替换() | 将StringBuffer对象中的一组字符替换为另一组字符 |
注: 除此之外,String类中使用的所有方法也可以使用。这些辅助方法如下:
它用于增加StringBuffer对象的容量。新容量将设置为我们指定的值或当前容量的两倍加上两倍(即容量+2),以较大者为准。这里,容量指定缓冲区的大小。
语法:
void ensureCapacity(int capacity)
- 追加码点(int码点) : 此方法将codePoint参数的字符串表示形式附加到此序列。
语法:
public StringBuffer appendCodePoint(int codePoint)
- 字符(整数索引)
此方法在指定的索引处返回此序列中的char值。
语法:
public char charAt(int index)
- IntStream chars() :此方法返回一个int zero流,扩展此序列中的字符值。
语法:
public IntStream chars()
- int代码点(int索引) :此方法返回指定索引处的字符(Unicode代码点)。
语法:
public int codePointAt(int index)
- int codePointBefore(int索引) :此方法返回指定索引之前的字符(Unicode代码点)。
语法:
public int codePointBefore(int index)
- int codePointCount(int beginIndex,int endIndex) :此方法返回此序列指定文本范围内的Unicode码点数。
语法:
public int codePointCount(int beginIndex, int endIndex)
- IntStream代码点() :此方法返回此序列中的代码点值流。
语法:
public IntStream codePoints()
- void getChars(int srcbeagin,int srcEnd,char[]dst,int dstbeagin) :在此方法中,字符从该序列复制到目标字符数组dst中。
语法:
public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
- int indexOf(字符串str) :此方法返回指定子字符串第一次出现的字符串内的索引。
语法:
public int indexOf(String str)public int indexOf(String str, int fromIndex)
- int lastIndexOf(字符串str) :此方法返回指定子字符串最后一次出现的字符串内的索引。
语法:
public int lastIndexOf(String str)public int lastIndexOf(String str, int fromIndex)
- int offsetByCodePoints(int index,int codePointOffset) :此方法返回此序列中的索引,该索引与给定索引的偏移量为codePointOffset code points。
语法:
public int offsetByCodePoints(int index, int codePointOffset)
- void setCharAt(int索引,char ch) :在此方法中,指定索引处的字符设置为ch。
语法:
public void setCharAt(int index, char ch)
- void setLength(int newLength) :此方法设置字符序列的长度。
语法:
public void setLength(int newLength)
- 字符序列子序列(int开始,int结束) :此方法返回一个新字符序列,该序列是此序列的子序列。
语法:
public CharSequence subSequence(int start, int end)
- 字符串子字符串(int start) :此方法返回一个新字符串,该字符串包含此字符序列中当前包含的字符的子序列。
语法:
public String substring(int start)public String substring(int start,int end)
- String to字符串() :此方法返回表示此序列中数据的字符串。
语法:
public String toString()
- void trimToSize() :此方法试图减少用于字符序列的存储。
语法:
public void trimToSize()
上面我们只讨论了最广泛使用的方法,并对它们进行了严格的限制,因为它们在编程极客中被广泛使用。
实施:
例1: 长度()和容量() 方法
JAVA
// Java Program to Illustrate StringBuffer class // via length() and capacity() methods // Importing I/O classes import java.io.*; // Main class class GFG { // main driver method public static void main(String[] args) { // Creating adn storing string by creating object of // StringBuffer StringBuffer s = new StringBuffer( "GeeksforGeeks" ); // Getting the length of the string int p = s.length(); // Getting the capacity of the string int q = s.capacity(); // Printing the length and capacity of // above generated input string on console System.out.println( "Length of string GeeksforGeeks=" + p); System.out.println( "Capacity of string GeeksforGeeks=" + q); } } |
Length of string GeeksforGeeks=13Capacity of string GeeksforGeeks=29
例2: 附加()
它用于在现有文本的末尾添加文本。
以下是它的几种形式:
StringBuffer append(String str)StringBuffer append(int num)
JAVA
// Java Program to Illustrate StringBuffer class // via append() method // Importing required classes import java.io.*; // Main class class GFG { // Main driver method public static void main(String[] args) { // Creating an object of StringBuffer class and // passing random string StringBuffer s = new StringBuffer( "Geeksfor" ); // Usage of append() method s.append( "Geeks" ); // Returns GeeksforGeeks System.out.println(s); s.append( 1 ); // Returns GeeksforGeeks1 System.out.println(s); } } |
GeeksforGeeksGeeksforGeeks1
例3: 插入()
它用于在指定的索引位置插入文本。
语法: 以下是其中的几点:
StringBuffer insert(int index, String str)StringBuffer insert(int index, char ch)
给 指数 指定将字符串插入调用 字符串缓冲区 对象
JAVA
// Java Program to Illustrate StringBuffer class // via insert() method // Importing required I/O classes import java.io.*; // Main class class GFG { // Main driver method public static void main(String[] args) { // Creating an object of StringBuffer class StringBuffer s = new StringBuffer( "GeeksGeeks" ); // Inserting element and position as an arguments s.insert( 5 , "for" ); // Returns GeeksforGeeks System.out.println(s); s.insert( 0 , 5 ); // Returns 5GeeksforGeeks System.out.println(s); s.insert( 3 , true ); // Returns 5GetrueeksforGeeks System.out.println(s); s.insert( 5 , 41 .35d); // Returns 5Getr41.35ueeksforGeeks System.out.println(s); s.insert( 8 , 41 .35f); // Returns 5Getr41.41.3535ueeksforGeeks System.out.println(s); // Declaring and initializing character array char geeks_arr[] = { 'p' , 'a' , 'w' , 'a' , 'n' }; // Inserting character array at offset 9 s.insert( 2 , geeks_arr); // Returns 5Gpawanetr41.41.3535ueeksforGeeks System.out.println(s); } } |
GeeksforGeeks5GeeksforGeeks5GetrueeksforGeeks5Getr41.35ueeksforGeeks5Getr41.41.3535ueeksforGeeks5Gpawanetr41.41.3535ueeksforGeeks
例4: 反面()
它可以使用 反转()。 此方法返回调用它的反向对象。
JAVA
// Java Program to Illustrate StringBuffer class // via reverse() method // Importing I/O classes import java.io.*; // Main class class GFG { // Main driver method public static void main(String[] args) { // Creating a string via creating // object of StringBuffer class StringBuffer s = new StringBuffer( "GeeksGeeks" ); // Invoking reverse() method s.reverse(); // Returns "skeeGrofskeeG" System.out.println(s); } } |
skeeGskeeG
它可以使用以下方法删除StringBuffer中的字符 删除() 和 删除字符() 这个 删除() 方法从调用对象中删除一系列字符。这里,开始索引指定要删除的第一个字符的索引,结束索引指定要删除的最后一个字符的索引。因此,删除的子字符串从开始索引运行到结束索引–1。返回结果StringBuffer对象。这个 删除字符() 方法在指定的索引处删除字符 位置。 它返回结果StringBuffer对象。
语法:
StringBuffer delete(int startIndex, int endIndex)StringBuffer deleteCharAt(int loc)
JAVA
// Java Program to Illustrate StringBuffer class // via delete() and deleteCharAt() Methods // Importing I/O classes import java.io.*; // Main class class GFG { // Main driver method public static void main(String[] args) { StringBuffer s = new StringBuffer( "GeeksforGeeks" ); s.delete( 0 , 5 ); // Returns forGeeks System.out.println(s); s.deleteCharAt( 7 ); // Returns forGeek System.out.println(s); } } |
forGeeksforGeek
例6: 替换()
它可以通过调用replace()将StringBuffer对象中的一组字符替换为另一组字符。被替换的子字符串由索引开始索引和结束索引指定。因此,从开始索引到结束索引的子字符串–1被替换。替换字符串在str中传递。返回结果StringBuffer对象。
语法:
StringBuffer replace(int startIndex, int endIndex, String str)
实例
JAVA
// Java Program to Illustrate StringBuffer class // via replace() method // Importing I/O classes import java.io.*; // Main class class GFG { // Main driver method public static void main(String[] args) { StringBuffer s = new StringBuffer( "GeeksforGeeks" ); s.replace( 5 , 8 , "are" ); // Returns GeeksareGeeks System.out.println(s); } } |
GeeksareGeeks
本文由 洛克什·托德瓦尔。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。