zoukankan      html  css  js  c++  java
  • C#中String和StringBuilder的区别

    String和StringBuilder的区别
    String类型对象的特点:

    1.它是引用类型,在堆上分配内存
    2.运算时会产生一个新的实例
    3.String 对象一旦生成不可改变(Immutable)
    4.定义相等运算符(== 和 !=)是为了比较 String 对象的值(而不是引用)

    String,StringBuilder类之间关系:

    乍一看它们都是用于处理字符串的java类,而且长得也都差不多,相信肯定有人会以为StringBuilder都是继承自String这个类,即认为String类是其他两个类的超类。
    但并非如此。

     由此可以看出:
    StringBuilder继承自AbstractStringBuilder这个类,而AbstractStringBuilder和String都继承自Object这个类(Object是所有java类的超类)。

    String是不可变类,StringBuilder是可变类。

    string本身是不可改变的,它只能赋值一次,每一次内容发生改变,都会生成一个新的对象,然后原有的对象引用新的对象,而每一次生成新对象都会对系统性能产生影响,这会降低.NET编译器的工作效率。

    StringBuilder类则不同,每次操作都是对自身对象进行操作,而不是生成新的对象,其所占空间会随着内容的增加而扩充,这样,在做大量的修改操作时,不会因生成大量匿名对象而影响系统性能。

    二者的执行效率:
    首先创建一个String对象str,并把“abc”赋值给str,然后在第三行中,其实JVM又创建了一个新的对象也名为str,然后再把原来的str的值和“de”加起来再赋值给新的str,而原来的str就会被JVM的垃圾回收机制(GC)给回收掉了,所以,str实际上并没有被更改,也就是前面说的String对象一旦创建之后就不可更改了。

    public class test{
    public static void main (String[] args)
    {
    String str="abc";
    System.out.printin(str);//输出abc
    str=str+"de";
    System.out.printin(str);//输出abcde
    }
    }

    而StringBuilder和StringBuffer的对象是变量,对变量进行操作就是直接对该对象进行更改,而不进行创建和回收的操作,所以速度要比String快很多。

    小技巧:
    String:适用于少量的字符串操作,字符串不经常发生变化的时,我们可以优先使用string

    总结一下

    1、string继承object类,stringbuilder继承AbstractStringBuilder。
    2、string是不可变类,stringbuilder是可变类。
    3、stringstringbuilder运行速度比string快。


    原文链接:https://blog.csdn.net/xaiolu_coco/java/article/details/104005213

  • 相关阅读:
    python 根据数组生成图片
    c++ 字符串转数字
    python 迷宫问题
    JavaScript 判断是否为空
    JavaScript 字符串转数字(整数,浮点数,进制转换)
    c++ 珊格迷宫问题
    python eval的用法
    python pillow 处理图片
    c 结构体
    python pillow 绘制图片
  • 原文地址:https://www.cnblogs.com/wugh8726254/p/13118286.html
Copyright © 2011-2022 走看看