String和string,string和StringBuilder

    xiaoxiao2021-08-23  106

    在C#中,string 是 System.String 的别名,所以基本上在使用时是没有差别的。

    习惯上,我们把字符串当作对象时(有值的对象实体),我们用string。而我们把它当类时(需要字符串类中定义的方法),我们用String,比如: string greet = String.Format(“Hello {0}!”, place);

    其实乱用也可以,只是这样概念上清楚一点。

    另外string是C#保留字,不可用作变量名,String就不是了。


    String可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了存储数值不可改变的字符串。因此,在使用字符串变量进行字符串拼接时(+=),效率比较低,因为要重新分配内存空间。

    StringBuilder是线程不安全的,进行字符串拼接时(Append)运行效率高,如果一个字符串变量是在方法里面定义,这种情况只可能有一个线程访问它,不存在不安全的因素了,则用StringBuilder。如果要在类里面定义成员变量,并且这个类的实例对象会在多线程环境下使用或者变量的内容不断变化,那么最好用StringBuffer。

    String S1 = "This is only a "; S1+= "simple "; StringBuffer Sb = new StringBuilder("This is only a").append(" simple").append("test");

    而在某些特别情况下, String 对象的字符串拼接其实是被 JVM 解释成了 StringBuffer 对象的拼接,所以这些时候 String 对象的速度并不会比 StringBuffer 对象慢,而特别是以下的字符串对象生成中, String 效率是远要比 StringBuffer 快的:

    String S1 = "This is only a " + "simple " + "test"; StringBuffer Sb = new StringBuilder("This is only a ").append(" simple ").append("test");
    转载请注明原文地址: https://ju.6miu.com/read-676914.html

    最新回复(0)