其他分享
首页 > 其他分享> > StringBuffer、StringBuilder、String

StringBuffer、StringBuilder、String

作者:互联网

String是一个字符序列,在Java中,String的对象是不可变的,说明这是一个常量,一旦创建就不可以更改。

Ex

class GFG {
    // Concatenates to String
    public static void concat1(String s1)
    {
        s1 = s1 + "forgeeks";
    }
 
    // Method 2
    // Concatenates to StringBuilder
    public static void concat2(StringBuilder s2)
    {
        s2.append("forgeeks");
    }
 
    // Method 3
    // Concatenates to StringBuffer
    public static void concat3(StringBuffer s3)
    {
        s3.append("forgeeks");
    }
 
    // Method 4
    // Main driver method
    public static void main(String[] args)
    {
        // Custom input string
        // String 1
        String s1 = "Geeks";
 
        // Calling above defined method
        concat1(s1);
 
        // s1 is not changed
        System.out.println("String: " + s1);
 
        // String 1
        StringBuilder s2 = new StringBuilder("Geeks");
 
        // Calling above defined method
        concat2(s2);
 
        // s2 is changed
        System.out.println("StringBuilder: " + s2);
 
        // String 3
        StringBuffer s3 = new StringBuffer("Geeks");
 
        // Calling above defined method
        concat3(s3);
 
        // s3 is changed
        System.out.println("StringBuffer: " + s3);
    }
}

output

String:Geeks 
StringBuilder:Geeksforgeeks 
StringBuffer:Geeksforgeeks

说明String是不可变的,更改字符串的值会创建另一个对象,concat1()中的s1存储新的字符串引用,main()和concat1()中的引用s1采引用用不同的字符串。
StringBuilder和StringBuffer都是可变的,若需要改变字符串可以使用它们。它们之间的区别在于StringBuffer是线程安全的,不过这也导致了它速度慢,所以在算法中一般使用StringBuilder。

参考文章

https://www.geeksforgeeks.org/string-vs-stringbuilder-vs-stringbuffer-in-java/

标签:String,s3,s2,s1,StringBuffer,StringBuilder
来源: https://www.cnblogs.com/frankLiang442/p/16364743.html