Java StringBuilder
Java StringBuilder类用于创建可变(可修改)字符串。 Java StringBuilder类与StringBuffer类相同,只不过它是不同步的。从JDK 1.5开始可用。
StringBuilder类的重要构造函数
构造函数 |
说明 |
StringBuilder() |
创建一个初始容量为16的空字符串构建器。 |
StringBuilder(String str) |
用指定的字符串创建一个字符串生成器。 |
StringBuilder(int length) |
创建一个具有指定容量作为长度的空字符串构建器。 |
StringBuilder类的重要方法
方法 |
说明 |
public StringBuilder append(String s) |
用于在指定的字符串后附加此字符串。 append()方法已重载,如append(char),append(boolean),append(int),append(float),append(double)等。 |
public StringBuilder insert(int offset,String s) |
用于在此字符串的指定位置插入指定字符串。 insert()方法已重载,如insert(int,char),insert(int,boolean),insert(int,int),insert(int,float),insert(int,double)等。 |
public StringBuilder replace(int startIndex, int endIndex, String str) |
用于替换指定的startIndex和endIndex中的字符串。 |
public StringBuilder delete(int startIndex, int endIndex) |
用于从指定的startIndex和endIndex删除字符串。 |
public StringBuilder reverse() |
用于反转字符串。 |
public int capacity() |
用于返回当前容量。 |
public void sureCapacity(int minimumCapacity) |
用于确保容量至少等于给定的最小值。 |
public char charAt(int index) |
用于返回指定位置的字符。 |
public int length() |
用于返回字符串的长度,即字符总数。 |
public String substring(int beginIndex) |
用于从指定的beginIndex返回子字符串。 |
public String substring(int beginIndex,int endIndex) |
用于从指定的beginIndex和endIndex返回子字符串。 |
Java StringBuilder示例
我们来看看StringBuilder类的不同方法的示例。
1 )StringBuilder append()方法
StringBuilder append()方法将给定参数与此字符串连接在一起。
class StringBuilderExample{
public static void main(String args[]){
StringBuilder sb=new StringBuilder("Hello ");
sb.append("Java");
System.out.println(sb);
}
}
2)StringBuilder insert()方法
StringBuilder insert()方法将给定字符串与该字符串插入给定位置。
class StringBuilderExample2{
public static void main(String args[]){
StringBuilder sb=new StringBuilder("Hello ");
sb.insert(1,"Java");
System.out.println(sb);
}
}
3)StringBuilder replace()方法
StringBuilder replace()方法从指定的beginIndex和endIndex替换给定的字符串。
class StringBuilderExample3{
public static void main(String args[]){
StringBuilder sb=new StringBuilder("Hello");
sb.replace(1,3,"Java");
System.out.println(sb);
}
}
4)StringBuilder delete()方法
StringBuilder类的delete()方法将字符串从指定的beginIndex删除为endIndex。
class StringBuilderExample4{
public static void main(String args[]){
StringBuilder sb=new StringBuilder("Hello");
sb.delete(1,3);
System.out.println(sb);
}
}
5)StringBuilder reverse()方法
StringBuilder类的reverse()方法将当前字符串反向。
class StringBuilderExample5{
public static void main(String args[]){
StringBuilder sb=new StringBuilder("Hello");
sb.reverse();
System.out.println(sb);
}
}
6)StringBuilder Capacity()方法
StringBuilder类的Capacity()方法返回Builder的当前容量。构建器的默认容量为16。如果字符数从其当前容量增加,它将增加(oldcapacity * 2)+2。例如,如果您当前的容量为16,则将为(16 * 2)+ 2 = 34。
class StringBuilderExample6{
public static void main(String args[]){
StringBuilder sb=new StringBuilder();
System.out.println(sb.capacity());
sb.append("Hello");
System.out.println(sb.capacity());
sb.append("java is my favourite language");
System.out.println(sb.capacity());
}
7)StringBuilder sureCapacity()方法
StringBuilder类的sureCapacity()方法可确保给定容量为当前容量的最小值。如果大于当前容量,则将容量增加(oldcapacity * 2)+2。例如,如果您当前的容量为16,则将为(16 * 2)+ 2 = 34。
class StringBuilderExample7{
public static void main(String args[]){
StringBuilder sb=new StringBuilder();
System.out.println(sb.capacity());
sb.append("Hello");
System.out.println(sb.capacity());
sb.append("java is my favourite language");
System.out.println(sb.capacity());
sb.ensureCapacity(10);
System.out.println(sb.capacity());
sb.ensureCapacity(50);
System.out.println(sb.capacity());
}
}
StringBuffer和StringBuilder之间的区别
Java提供了三个类来表示字符序列: String,StringBuffer和StringBuilder。 String类是不可变的类,而StringBuffer和StringBuilder类是可变的。 StringBuffer和StringBuilder之间有很多区别。从JDK 1.5开始引入StringBuilder类。
以下列出了StringBuffer和StringBuilder之间的差异:
StringBuffer |
StringBuilder |
StringBuffer是同步的,即线程安全。这意味着两个线程不能同时调用StringBuffer的方法。 |
StringBuilder是不同步的,即不是线程安全的。这意味着两个线程可以同时调用StringBuilder的方法。 |
StringBuffer的效率比StringBuilder 低。 |
StringBuilder比StringBuffer更高效。 |
StringBuffer示例
//Java Program to demonstrate the use of StringBuffer class.public class BufferTest{
public static void main(String[] args){
StringBuffer buffer=new StringBuffer("hello");
buffer.append("java");
System.out.println(buffer);
}
}
StringBuilder示例
//Java Program to demonstrate the use of StringBuilder class.public class BuilderTest{
public static void main(String[] args){
StringBuilder builder=new StringBuilder("hello");
builder.append("java");
System.out.println(builder);
}
}
StringBuffer和StringBuilder的性能测试
让我们看一下检查StringBuffer和StringBuilder类性能的代码。
//Java Program to demonstrate the performance of StringBuffer and StringBuilder classes.public class ConcatTest{
public static void main(String[] args){
long startTime = System.currentTimeMillis();
StringBuffer sb = new StringBuffer("Java");
for (int i=0; i<10000; i++){
sb.append("Tpoint");
}
System.out.println("Time taken by StringBuffer: " + (System.currentTimeMillis() - startTime) + "ms");
startTime = System.currentTimeMillis();
StringBuilder sb2 = new StringBuilder("Java");
for (int i=0; i<10000; i++){
sb2.append("Tpoint");
}
System.out.println("Time taken by StringBuilder: " + (System.currentTimeMillis() - startTime) + "ms");
}
}
Time taken by StringBuffer: 16msTime taken by StringBuilder: 0ms