Java教程

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更高效。

Java中的StringBuffer与StringBuilder

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);
    }
}
hellojava

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);
    }
}
hellojava

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
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4