StringBuilder用法

//来自MSDN,不太懂英文可以使用百度翻译。

//using System;
//using System.Text;

//public sealed class App
//{
//    static void Main()
//    {
//        // Create a StringBuilder that expects to hold 50 characters.
//        // Initialize the StringBuilder with "ABC".
//        StringBuilder sb = new StringBuilder("ABC", 50);

//        // Append three characters (D, E, and F) to the end of the StringBuilder.
//        sb.Append(new char[] { ‘D‘, ‘E‘, ‘F‘ });

//        // Append a format string to the end of the StringBuilder.
//        sb.AppendFormat("GHI{0}{1}", ‘J‘, ‘k‘);

//        // Display the number of characters in the StringBuilder and its string.
//        Console.WriteLine("{0} chars: {1}", sb.Length, sb.ToString());

//        // Insert a string at the beginning of the StringBuilder.
//        sb.Insert(0, "Alphabet:  ");

//        // Replace all lowercase k‘s with uppercase K‘s.
//        sb.Replace(‘k‘, ‘K‘);

//        // Display the number of characters in the StringBuilder and its string.
//        Console.WriteLine("{0} chars: {1}", sb.Length, sb.ToString());
//        Console.ReadKey();
//    }
//}

// This code produces the following output.
//
// 11 chars: ABCDEFGHIJk  //计算字符个数是从1开始计数,而不是从0.
// 21 chars: Alphabet: ABCDEFGHIJK

//备注

//SubString类表示值为可变字符序列的类似字符串的对象。之所以说值是可变的,是因为在通过追加、移除、替换或插入字符而创建它后可以对它进行修改。

//大多数修改此类的实例的方法都返回对同一实例的引用。由于返回的是对实例的引用,因此可以调用该引用的方法或属性。如果想要编写将连续操作依次连接起来的单个语句,这将很方便。

//StringBuilder 的容量是实例在任何给定时间可存储的最大字符数,并且大于或等于实例值的字符串表示形式的长度。容量可通过 Capacity 属性或 EnsureCapacity 方法来增加或减少,但它不能小于 Length 属性的值。

//如果在初始化 StringBuilder 的实例时没有指定容量或最大容量,则使用特定于实现的默认值。

//性能注意事项

//Concat 和 AppendFormat 方法都将新数据串连到一个现有的 String 或 StringBuilder 对象。String 对象串联操作总是用现有字符串和新数据创建新的对象。StringBuilder 对象维护一个缓冲区,以便容纳新数据的串联。如果有足够的空间,新数据将被追加到缓冲区的末尾;否则,将分配一个新的、更大的缓冲区,原始缓冲区中的数据被复制到新的缓冲区,然后将新数据追加到新的缓冲区。 

//String 或 StringBuilder 对象的串联操作的性能取决于内存分配的发生频率。String 串联操作每次都分配内存,而 StringBuilder 串联操作仅当 StringBuilder 对象缓冲区太小而无法容纳新数据时才分配内存。因此,如果串联固定数量的 String 对象,则 String 类更适合串联操作。这种情况下,编译器甚至会将各个串联操作组合到一个操作中。如果串联任意数量的字符串,则 StringBuilder 对象更适合串联操作;例如,某个循环对用户输入的任意数量的字符串进行串联。

//给实现者的说明 此实现的默认容量是 16,默认的最大容量是 Int32.MaxValue。 当实例值增大时,StringBuilder 可按存储字符的需要分配更多的内存,同时对容量进行相应的调整。分配的内存量是特定于实现的,而且如果所需内存量大于最大容量,会引发 ArgumentOutOfRangeException。 例如,Append、AppendFormat、EnsureCapacity、Insert 和 Replace 方法能增大实例的值。 通过 Chars 属性可以访问 StringBuilder 的值中的单个字符。索引位置从零开始。 
时间: 2024-08-12 07:51:52

StringBuilder用法的相关文章

StringBuffer和StringBuilder用法比较

StringBuffer是字符串缓冲区,是一个容器. 特点: 1,长度是可变化的. 2,可以字节操作多个数据类型. 3,最终会通过toString方法变成字符串. C create U update R read D delete 1,存储. StringBuffer append():将指定数据作为参数添加到已有数据结尾处. StringBuffer insert(index,数据):可以将数据插入到指定index位置. 2,删除. StringBuffer delete(start,end)

StringBuilder基本用法

//StringBuilder用法 public class StringBuilderTest { public static void main(String[] args) { StringBuilder sb = new StringBuilder(); //追加字符串 sb.append("Java"); //sb = "Java"; System.out.println(sb); //插入 sb.insert(0, "Hello ")

从为什么String=String谈到StringBuilder和StringBuffer

前言 有这么一段代码 1 public class TestMain 2 { 3 public static void main(String[] args) 4 { 5 String str0 = "123"; 6 String str1 = "123"; 7 System.out.println(str0 == str1); 8 } 9 } 运行结果是什么?答案当然是true.对,答案的确是true,但是这是为什么呢?很多人第一反应肯定是两个“123”的Stri

String类知识点

前言 有这么一段代码 1 public class TestMain 2 { 3 public static void main(String[] args) 4 { 5 String str0 = "123"; 6 String str1 = "123"; 7 System.out.println(str0 == str1); 8 } 9 } 运行结果是什么?答案当然是true.对,答案的确是true,但是这是为什么 呢?很多人第一反应肯定是两个"123

JavaScript 常用方法总结

1.手机类型判断 var BrowserInfo = { userAgent: navigator.userAgent.toLowerCase() isAndroid: Boolean(navigator.userAgent.match(/android/ig)), isIphone: Boolean(navigator.userAgent.match(/iphone|ipod/ig)), isIpad: Boolean(navigator.userAgent.match(/ipad/ig)),

java中stringBuilder的用法

java中stringBuilder的用法 String对象是不可改变的.每次使用 System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需要对字符串执行重复修改的情况下,与创建新的 String对象相关的系统开销可能会非常昂贵.如果要修改字符串而不创建新的对象,则可以使用System.Text.StringBuilder类.例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder类可以提升性能. 通过用一个重载的

Object,String,StringBuffer,StringBuilder,System,Runtime,Date,Math介绍及用法(API)

1       Object对象 面向对象的核心思想:“找合适的对象,做适合的事情”. 合适的对象: 自己描述类,自己创建对象. sun已经描述了好多常用的类,可以使用这些类创建对象. API(Application Program Interface) sun定义的那么多类的终极父类是Object.Object描述的是所有类的通用属性与方法. 1.1   toString方法 toString() 返回对象的描述信息   [email protected]   类名@哈希码值的十六进制形式.

java stringBuilder的用法

String对象是不可改变的.每次使用 System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需要对字符串执行重复修改的情况下,与创建新的 String对象相关的系统开销可能会非常昂贵.如果要修改字符串而不创建新的对象,则可以使用System.Text.StringBuilder类.例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder类可以提升性能. (一)设置容量和长度 虽然 StringBuilder对象是

Java 中 StringBuilder 在高性能用法总结

关于StringBuilder,一般同学只简单记住了,字符串拼接要用StringBuilder,不要用+,也不要用StringBuffer,然后性能就是最好的了,真的吗吗吗吗? 还有些同学,还听过三句似是而非的经验: 1. Java编译优化后+和StringBuilder的效果一样: 2. StringBuilder不是线程安全的,为了“安全”起见最好还是用StringBuffer: 3. 永远不要自己拼接日志信息的字符串,交给slf4j来. 1. 初始长度好重要,值得说四次. StringBu