📅  最后修改于: 2020-03-25 01:35:25             🧑  作者: Mango
Java中的字符串类
StringBuffer是String的对等类,它提供了许多字符串函数。String表示固定长度、不可变的字符序列,而StringBuffer表示可增长和可写的字符序列。
StringBuffer的字符和子字符串可以插入中间或附加到末尾。它会自动增长以为此类添加腾出空间,并且通常会预先分配比实际需要更多的字符,以留出增长空间。
StringBuffer构造函数:StringBuffer(): 它保留16个字符的空间,而无需重新分配。
StringBuffer s=new StringBuffer();
StringBuffer(int size)它接受一个整数参数,该参数显式设置缓冲区的大小。
StringBuffer s=new StringBuffer(20);
StringBuffer(String str): 它接受一个String参数,该参数设置StringBuffer对象的初始内容,并为另外16个字符保留空间而无需重新分配。
StringBuffer s=new StringBuffer("芒果文档");
方法
一些最常用的方法是:
import java.io.*;
class GFG {
public static void main(String[] args)
{
StringBuffer s = new StringBuffer("芒果文档");
int p = s.length();
int q = s.capacity();
System.out.println("字符串长度 芒果文档=" + p);
System.out.println("字符串分配容量 芒果文档=" + q);
}
}
输出:
字符串长度 芒果文档=4
字符串分配容量 芒果文档=29
StringBuffer append(String str)
StringBuffer append(int num)
代码 示例:
import java.io.*;
class GFG {
public static void main(String[] args)
{
StringBuffer s = new StringBuffer("芒果");
s.append("文档");
System.out.println(s); // 返回 芒果文档
s.append(1);
System.out.println(s); // 返回 芒果文档1
}
}
输出:
芒果文档
芒果文档1
StringBuffer insert(int index,String str)
StringBuffer insert(int index,char ch)
在这里,index指定将字符串插入到调用StringBuffer对象的位置的索引。
代码示例
import java.io.*;
class GFG {
public static void main(String[] args)
{
StringBuffer s = new StringBuffer("GeeksGeeks");
s.insert(5, "for");
System.out.println(s); // 返回 GeeksforGeeks
s.insert(0, 5);
System.out.println(s); // 返回 5GeeksforGeeks
s.insert(3, true);
System.out.println(s); // 返回 5GetrueeksforGeeks
s.insert(5, 41.35d);
System.out.println(s); // 返回 5Getr41.35ueeksforGeeks
s.insert(8, 41.35f);
System.out.println(s); // 返回 5Getr41.41.3535ueeksforGeeks
char geeks_arr[] = { 'p', 'a', 'w', 'a', 'n' };
// 在偏移量=9的地方插入字符
s.insert(2, geeks_arr);
System.out.println(s); // 返回 5Gpawanetr41.41.3535ueeksforGeeks
}
}
输出:
GeeksforGeeks
5GeeksforGeeks
5GetrueeksforGeeks
5Getr41.35ueeksforGeeks
5Getr41.41.3535ueeksforGeeks
5Gpawanetr41.41.3535ueeksforGeeks
import java.io.*;
class GFG {
public static void main(String[] args)
{
StringBuffer s = new StringBuffer("GeeksGeeks");
s.reverse();
System.out.println(s); // returns skeeGrofskeeG
}
}
输出:
skeeGskeeG
StringBuffer delete(int startIndex, int endIndex)
StringBuffer deleteCharAt(int loc)
代码示例:
import java.io.*;
class GFG {
public static void main(String[] args)
{
StringBuffer s = new StringBuffer("GeeksforGeeks");
s.delete(0, 5);
System.out.println(s); // 返回 forGeeks
s.deleteCharAt(7);
System.out.println(s); // 返回 forGeek
}
}
输出:
forGeeks
forGeek
StringBuffer replace(int startIndex, int endIndex, String str)
代码示例:
import Java.io.*;
class GFG {
public static void main(String[] args)
{
StringBuffer s = new StringBuffer("GeeksforGeeks");
s.replace(5, 8, "are");
System.out.println(s); // 返回 GeeksareGeeks
}
}
输出:
GeeksareGeeks
void ensureCapacity(int capacity)
除此之外,还可以使用String类中使用的所有方法。
public StringBuffer appendCodePoint(int codePoint)
public char charAt(int index)
public IntStream chars()
public int codePointAt(int index)
public int codePointBefore(int index)
public int codePointCount(int beginIndex,
int endIndex)
public IntStream codePoints()
public void getChars(int srcBegin,
int srcEnd,
char[] dst,
int dstBegin)
public int indexOf(String str)
public int indexOf(String str,
int fromIndex)
public int indexOf(String str)
public int indexOf(String str,
int fromIndex)
public int offsetByCodePoints(int index,
int codePointOffset)
public int offsetByCodePoints(int index,
int codePointOffset)
public void setCharAt(int index,
char ch)
public CharSequence subSequence(int start,
int end)
public String substring(int start)
public String substring(int start,
int end)
public String toString()
public void trimToSize()
一些有趣的事实:
StringBuilder: J2SE 5向Java已经强大的字符串处理功能中添加了新的字符串类。这个新类称为StringBuilder。它与StringBuffer相同,除了一个重要的区别:它不同步,这意味着它不是线程安全的。StringBuilder的优点是性能更快。但是,在使用多线程的情况下,必须使用StringBuffer而不是StringBuilder。