黑马程序员 日记四:String、StringBuffer和StringBuilder的比较与总结
2012-05-11 19:35
633 查看
---------------------- android培训、java培训、期待与您交流!
String
在API文档中,有如下描述:
public final class String extends Object implements Serializable, Comparable<String>, CharSequence
可以看出,Stirng是不被继承的。
String有如下特性:
长度固定,一旦被生成出来,就不能被改变。
代码解释:
String str1 = "abc";
str1 = "def";
关于这两行代码,并非改变了字符串,"abc"这个字符串一直没有改变,而是str1从指向"abc"变为指向"def"。
如果想改变字符序列,可以使用StringBuffer或者StringBuilder实现。
StringBuffer
在API文档中,对StringBuffer有如下描述:
public final class StringBuffer extends Object implements Serializable, CharSequence
可以看出,StringBuffer也是不被继承的,而且,他是线程安全的类,也就是说,其内部的方法,是互斥的。
StringBuffer类提供了append,insert,delete,deleteCharAt,setCharAt等方法,来改变当前的StringBuffer对象。
StringBuilder
API文档中,描述如下:
public final class StringBuilder extends Object implements Serializable, CharSequence
同样不能被继承,并且其方法几乎和StringBuffer相同,区别于StringBuffer是线程安全的,而StringBuilder并不是线程安全的,没有线程同步保证机制。
在毕向东老师讲课过程中,用自己的方法实现了String的部分方法,以下是我实现的部分方法:
该方法中,可以讲StringBuffer类sb变成StringBuilder。
与毕向东老师实现的代码不同的是:在母串为"kkk",子串为"kk"的情况下,毕老师的方法,结果为1,我实现的方法结果为2,因为我认为母串中前两个kk和子串相同,后两个kk也和子串相同,应该算两个。
-------------------------------------------- android培训、java培训、期待与您交流!
----------------------
详细请查看:http://edu.csdn.net/heima
String
在API文档中,有如下描述:
public final class String extends Object implements Serializable, Comparable<String>, CharSequence
可以看出,Stirng是不被继承的。
String有如下特性:
长度固定,一旦被生成出来,就不能被改变。
代码解释:
String str1 = "abc";
str1 = "def";
关于这两行代码,并非改变了字符串,"abc"这个字符串一直没有改变,而是str1从指向"abc"变为指向"def"。
如果想改变字符序列,可以使用StringBuffer或者StringBuilder实现。
StringBuffer
在API文档中,对StringBuffer有如下描述:
public final class StringBuffer extends Object implements Serializable, CharSequence
可以看出,StringBuffer也是不被继承的,而且,他是线程安全的类,也就是说,其内部的方法,是互斥的。
StringBuffer类提供了append,insert,delete,deleteCharAt,setCharAt等方法,来改变当前的StringBuffer对象。
StringBuilder
API文档中,描述如下:
public final class StringBuilder extends Object implements Serializable, CharSequence
同样不能被继承,并且其方法几乎和StringBuffer相同,区别于StringBuffer是线程安全的,而StringBuilder并不是线程安全的,没有线程同步保证机制。
在毕向东老师讲课过程中,用自己的方法实现了String的部分方法,以下是我实现的部分方法:
//用来模仿String类里的trim方法,去除字符串前后的空格。 public String simTrim (String str) { StringBuffer sb = new StringBuffer (str); while (sb.charAt(0) == ' ') { sb.deleteCharAt(0); } while (sb.charAt(sb.length()-1) == ' ') { sb.deleteCharAt(sb.length()-1); } return sb.toString(); }
该方法中,可以讲StringBuffer类sb变成StringBuilder。
//该方法用来计算母串中包含几个子串; public int getTimes (String mager, String sub) { int times = 0; if (mager.length() < sub.length()) { } else { for (int i = 0; i+sub.length() <= mager.length(); i++) { if (mager.substring(i, i+sub.length()).equals(sub)) { times++; } } } return times; }
与毕向东老师实现的代码不同的是:在母串为"kkk",子串为"kk"的情况下,毕老师的方法,结果为1,我实现的方法结果为2,因为我认为母串中前两个kk和子串相同,后两个kk也和子串相同,应该算两个。
-------------------------------------------- android培训、java培训、期待与您交流!
----------------------
详细请查看:http://edu.csdn.net/heima
相关文章推荐
- 38.黑马程序员-String、StringBuffer、StringBuilder比较
- Java基础学习总结(65)——Java中的String,StringBuilder和StringBuffer比较
- 黑马程序员----【javaSE基础】个人总结--String 、 StringBuffer 和 StringBuilder
- Java基础学习总结(65)——Java中的String,StringBuilder和StringBuffer比较
- String、StringBuffer和StringBuilder的比较与总结
- String,StringBuffer,StringBuilder比较
- StringBuffer和StringBuilder和String比较
- String的"+"-StringBuilder-StringBuffer比较
- 重拾java基础(十三):String姐妹StringBuffer、StringBuilder总结
- 黑马程序员-String、StringBuffer、StringBuilder
- 14、Android中String、StringBuffer与StringBuilder的比较
- Java String,StringBuilder,StringBuffer区别和实际应用总结
- Java中String、StringBuffer、StringBuilder的总结
- String、StringBuilder、StringBuffer的总结
- 黑马程序员java基础String、StringBuffer、StringBuilder笔记
- 黑马程序员_Java学习日记7_String总结
- 黑马程序员——03 String,StringBuffer,StringBuilder的联系以及三者的常用方法
- 黑马程序员_学习日记38_602基础加强(string、StringBuilder、Object.ReferenceEquals)
- String、StringBuilder、StringBuffer 用法比较
- String、StringBuffer、StringBuilder之间的比较