有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java字符串和StringBuffer中处理文本的类之间的差异

当我声明String时,如下所示:

String a= "Hello, World!"

我想问的是:String从数组生成

此外,我了解StringBuffer是专门用于文本编辑的。如果我使用String文本在执行程序时无法更改,这意味着如果我想更改或处理文本,我应该使用StringBuffer

是这样吗,伙计们


共 (6) 个答案

  1. # 1 楼答案

    1. 存储区
      1.1String-常量字符串池
      1.2StringBuffer-堆
      1.3StringBuilder-堆

    2. 可修改
      2.1String-No(不可变)
      2.2StringBuffer-是(可变)
      2.3StringBuilder-是(可变)

    3. 线程安全的
      3.1String-是
      3.2StringBuffer-是
      3.3{}-否

    4. 性能
      4.1String-快速
      4.2StringBuffer-非常慢
      4.3StringBuilder-快速

  2. # 2 楼答案

    嘿,你可以改变字符串的值

    参见示例

    String s="raju";
    s=s+"ravi";
    

    如果我们打印s,它会打印出来

    raju ravi.

    但是StringBuffer是线程安全的,当您在建议使用StringBuffer的多线程环境中使用String

    如果您想要不可变且不多线程的环境和更好的性能,建议使用StringBuilder

  3. # 3 楼答案

    字符串在java中是不可变的,而StringBuffer和StringBuilder类在需要对字符串进行大量修改时使用

    与字符串不同,StringBuffer和Stringbuilder类型的对象可以反复修改,而不会留下大量未使用的新对象

    StringBuilder类是从Java5开始引入的,StringBuffer和StringBuilder之间的主要区别在于StringBuilder方法不是线程安全的(不同步)

    建议尽可能使用StringBuilder,因为它比StringBuffer快。但是,如果需要线程安全,最好的选择是StringBuffer对象。 范例

    public class Test{
    
    public static void main(String args[]){
       StringBuffer sBuffer = new StringBuffer(" test");
       sBuffer.append(" String Buffer");
       System.ou.println(sBuffer);  
       }
    }
    

    您也可以使用delete(int start, int end), public insert(int offset, int i),replace(int start, int end, String str) functions with string builder and buffer class

    有关更多详细信息,请参见此link

  4. # 4 楼答案

    如果多用户正在使用字符串,那么最好使用StringBuffer线程安全

    如果只有一个用户将编辑,则该字符串最好使用StringBuilder(更快,性能更好)

    另一方面String不可变的,这意味着如果你没有计划编辑你的字符串,你最好选择简单的String对象,因为通过缓存它会更快

  5. # 5 楼答案

    您可以使用这两种方法处理文本,但主要区别在于,在执行串联时,“StringBuffer”比“String”快

  6. # 6 楼答案

    您始终可以在java中更改字符串,如:

    String value = "hello";
    value = value + " world";
    System.out.println(value); // "hello world"
    

    但这需要大量计算,因此应改用StringBuilder:

    StringBuilder value = new StringBuilder("hello");
    value.append(" world");
    System.out.println(value.toString()); // "hello world"