ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

StringBuffer、StringBuilder、String

2022-06-11 11:35:45  阅读:135  来源: 互联网

标签:String s3 s2 s1 StringBuffer StringBuilder


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有