stringbuilder大小,stringbuilder和string

http://www.itjxue.com  2023-01-24 12:54  来源:未知  点击次数: 

java中StringBuilder的长度问题

StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。 每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。

StringBuffer buf=new StringBuffer(); //分配长16字节的字符缓冲区

StringBuffer buf=new StringBuffer(512); //分配长512字节的字符缓冲区

StringBuffer buf=new StringBuffer("this is a test")//在缓冲区中存放了字符串,并在后面预留了16字节的空缓冲区。

注意,是16字节的字符缓冲区,不是长度,length是取出字符串的长度,创建该对象时,没有字符串,自然长度就是0了

C#基础string和StringBuilder

string 和 StringBuilder 的区别: tring 不可变, StringBuilder 是可变的

当 StringBuilder 字符大小达到限制就会去申请新的内存区域,大小是原来的2倍

1、利用构造函数创造StringBuilder

System.Text.StringBuilder sb = new System.Text.StringBuilder("HelloWord");

2、初始化一个空的StringBuilder,大小为20

StringBuilder sb = new StringBuilder(20);

3、初始化了一个对象,初始化的对象是HelloWord,这个对象有20字符大小

StringBuilder sb =new StringBuilder("HelloWord",20);

StringBuilder 追加字符串

4、当我们需要对一个字符串进行频繁的删除和添加,使用StringBuilder的效率会高于string

sb.Append("HaoShuai");

sb.Insert(0, "http://");

字符串

1、字符串的不可变性:当你重新给一个字符串赋值之后,老值并无销毁,会重新开辟一块新的内存储存。

当程序结束后,GC扫描整个内存,如果发现有的空间没有被指向,则立即把它销毁

2、我们可以将字符串看做是char类型的一个只读数组

ToCharArray(); 将字符串转换成Char数组

new string(char[] chs) :能够将char数组转换成字符串

字符串提供的各种方法

1、 Length 获取字符串的长度个数。

2、 ToUpper(); 将字符串转换成大写形式

3、 ToLower(); 将字符串转换成小写形式

4、 Equals(比较的字符串,StringComparison。OrdinalIgnoreCase); 比较两个字符串,忽略大小写

5、 Split(); 分割字符串,返回字符串数组

CompareTo : 比较字符串 返回值int -1,0,1

//CompareTo:字符串比较

string s = "jiangxinbin";

//当两个字符串相等的时候,返回0 如果当比较 j 时,就在字母表靠前返回1,靠后返回-1

int res = s.CompareTo("jiangxinbin");

Replace :把指定字符替换指定自定义字符 不影响原字符 字符换字符 字符串换字符串

string newSTr= s.Replace('.', '-');

string newSTr= s.Replace(“.”,“----”);

Split: 在出现给定字符的地方,把字符串拆分成一个字符串数组

string[] strArray = s.Split('.');

Substring : 截取指定字符串位置后面的长度的字符串

string str = s.Substring(6);

ToLower : 把字符串转换成小写形式

ToUpper: 把字符串转换成大写形式

Trim: 删除收尾的空白

Concat: 合并字符串

CopyTo: 把字符串中指定的字符复制到一个数组中

Format: 格式化字符串

indexOf 取得字符串第一次出现某个给定字符串或者字符的位置

ndexOfAny

insert: 把一个字符串实例插入到另一个字符串实例的制定索引处

Join: 合并字符串数组,创建一个新的字符串

string 是 System.String 的别名

// string 和 StringBuilder 的区别: string 不可变, StringBuilder 是可变的

// 当 StringBuilder 字符大小达到限制就会去申请新的内存区域,大小是原来的2倍

// 1、利用构造函数创造 StringBuilder

//System.Text.StringBuilder sb = new System.Text.StringBuilder("JiangXinBIn");

// 2、初始化一个空的 StringBuilder ,大小为20

//StringBuilder sb = new StringBuilder(20);

// 3、初始化了一个对象,初始化的对象是JiangXinBin,这个对象有20字符大小

StringBuilder sb =new StringBuilder("JaingXinBin",20);

StringBuilder:

Append() 方法,给当前字符串追加字符

insert() 追加特定格式的字符串

Remove() 从当前字符串中删除字符

Replace() 在当前字符串中,用某个字符或者字符串全部替换另一个字符或字符串

ToSting() 吧当前的 StringBuilder 中存储的字符串,提取成一个不可变得字符串

java StringBuilder 指定大小了 为什么能超出?

StringBuilder 对象是动态对象,允许扩充它所封装的字符串中字符的数量,但是您可以为它可容纳的最大字符数指定一个值。此值称为该对象的容量,不应将它与当前 StringBuilder 对象容纳的字符串长度混淆在一起。例如,可以创建 StringBuilder 类的带有字符串“Hello”(长度为 5)的一个新实例,同时可以指定该对象的最大容量为 25。当修改 StringBuilder 时,在达到容量之前,它不会为其自己重新分配空间。当达到容量时,将自动分配新的空间且容量翻倍。这也就是为什么说stringbuilder定义后 “可以改变,且线程不安全”

StringBuilder初始化大小时指定大小和不指定大小有什么区别?

指定了大小后,在运行效率上会高很多,这个是一个方面。另外一个方面,当你调用Win32的DLL时,如果接口方法的参数中有字符串的输出(LPSTR),就应该使用StringBuilder这个类型,此时,定义的StringBuilder变量就必须指定大小(为变量初始化内存空间),否则,当DLL内部对变量空间赋值的时候会失败,甚至出现意外,因为外部DLL并不支持StringBuilder这样的数据操作行为。

(责任编辑:IT教学网)

更多

推荐浏览器文章