黑马程序员--string和StringBuilder的区别
---------------------- android培训、java培训、期待与您交流! ----------------------
1、操作上
string对象是不变,怎么去理解这个“不变”呢,不变也就是内存中的长度是不变的!
例如:
string str="a";
str=str+"b";
代码解析:声明一个str对象值是a,第二行的时候本身加上b,此时CLR在进行内存操作的时候,并没有将str原有的长度变长然后附加上b值,而是重新声明一个对象(从新在内存中开辟一片不变的空间存放第二句的操作),第一句声明的对象str将被丢弃!
StringBuilder是可变的,也是专门对字符串进行操作的类!
例如:
StringBuilder sb=new StringBuilder("a");
sb.Append("b");
StringBuilder在内部有一个足够长的字符数组用于存放字符串对象,当字符串超过数组的长度的时候,将会自动创建一个更长的数据,然后把原来的数据复制到新数组中,没有超过的话就始终操作同一个字符串数组!
2、操作性能上的比较
内存都是昂贵的,当然我说的不是价格,是程序在运行中内存需求!
当使用string的时候,频繁的操作字符串,就会不断的分配新的内存,然后进行操作,而StringBuilder就不会,所以在日常开发的时候,要进行对字符串进行频繁的操作的时候就考虑使用StringBuilder而不是使用string来进行频繁的操作字符串!
---------------------- android培训、java培训、期待与您交流! ----------------------