zoukankan      html  css  js  c++  java
  • String和StringBuilder的区别与用法

    String:表示不可变字符串;每当在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间,而且在进行字符串连接的时候是新建一个字符串,进行连接后,最后赋值,如果对String赋值多次,就会在内存中保存多个这个对象的副本,浪费系统资源。

    StringBuilder:表示可变字符串;不用生成中间对象,拼接字符串比较多,或字符串的长度比较长时有较高的效率。StringBuilder的内存空间不够也要扩容而且翻倍,在分配空间时,不要过大,过大就会浪费浪费资源。 所以,初始化StringBuilder的时候最好根据需要设置容量,避免浪费

    String和StringBuilder使用时对占用的内存情况:

    如:

    1.string a="aa"+"bb";

    2.stringbuilder sb=new stringbuilder();

    sb.append("aa"); sb.append("bb");

    区别在于:

    1. string s = "";

    for (int i=0;i<1000;i++)   

    s+=i.ToString();

    2. StringBuilder sb = new StringBuilder(3000);//预先分配3000个字符,避免出现容量不足,新建string实例

    for (int i=0;i<1000;i++)   

    sb.Append(i.ToString());

    第一种一共出现了: ""(由s = ""产生的程序集共享的string实例) "0","1"..."999"(1000个由i.ToString产生) "0","01"..."01...998999"(1000个由+=产生) 总共2001个字符串实例

    第二种一共出现了: "0","1"..."999"(1000个由i.ToString产生) 一个stringbuilder引用的字符串,总共1001个字符串实例

    StringBuilder的方法与使用

    1.StringBuilder.Append 将信息追加到当前 StringBuilder 的结尾。

    如:

    StringBuilder Sb = new StringBuilder("ABC!");

    Sb.Append(" DEF");

    Console.WriteLine(Sb); 结果是:ABCDEF

    2.StringBuilder.AppendFormat 用带格式文本替换字符串中传递的格式说明符,而且实现了 IFormattable 接口,因此可接受格式化部分中描述的标准格式字符串并且追加到结尾

    如:格式化货币值格式类型

    int MyInt = 25;

    StringBuilder SB = new StringBuilder("Your total is ");

    SB.AppendFormat("{0:C} ", MyInt);

    Console.WriteLine(SB);结果是:Your total is $25.00

    3.StringBuilder.Insert 将字符串或对象插入到当前 StringBuilder 对象的指定索引处,索引从0开始

    如:

    StringBuilder SB = new StringBuilder("ABCDEF");

    SB.Insert(2,"HHH ");

    Console.WriteLine(SB);结果是:ABHHHCDEF

    4.StringBuilder.Remove 从当前 StringBuilder 对象中移除指定数量的字符,索引从0开始  

    如: StringBuilder SB = new StringBuilder("ABCDEF");

    SB.Remove(2,4); Console.WriteLine(SB);结果是:AB

    5.StringBuilder.Replace 替换指定索引处的指定字符。

    如: StringBuilder SB = new StringBuilder("ABCDEF");

    SB.Replace(A,H);

    Console.WriteLine(SB);结果是:HBCDEF

  • 相关阅读:
    学习笔记-Python基础4-九九乘法表练习
    学习笔记-Python基础4-函数
    学习笔记-Python基础3-程序结构:顺序、分支、循环
    JS根据获取的navigator.userAgent,判断用户打开页面的终端
    代理模式,CGLIB 与Spring AOP实现原理
    ueditor不过滤保存html
    ecstore 新增input控件方法
    ecstore前台模板保留css样式
    ecstore 当前网址
    mysql 导入数据过大报错
  • 原文地址:https://www.cnblogs.com/lxjie/p/3100890.html
Copyright © 2011-2022 走看看