A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 【⑨】№①妮 中级黑马   /  2013-12-20 09:08  /  1318 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 【⑨】№①妮 于 2013-12-21 20:56 编辑

有几种比较字符串的方法?

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1 鼓励一下

查看全部评分

6 个回复

倒序浏览
String代表一个字符串,一旦建立对象是不可改变的。

StringBuffer是字符串缓冲期。
         提高字符串的操作效率,利用数组做缓冲,可以理解,StringBuffer是一个容器。
而且StringBuffer是可变。
回复 使用道具 举报
String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。string的字符串操作会频繁的申请内存。
而StringBuilder则不会这样,他会自动的向后扩展,不需要频繁的申请内存。

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
string类的实例说明为:
   String s=”a”;
   s=s+”a”;
  StringBuilder实例说明为:
  Stringbuilder sb=new stringbuilder(“a”);
  Sb.Append(“b”);
所以System.String是不可变的字符串。System.StringBuilder存放了一个可变的字符串,并提供了一些对这个字符串修改的方法。

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
由String对象的不可变性可知    每次使用String类的一个方法时  都要在内存中创建一个新的字符串对象   就要为这个新对象分配新的内存空间   当大量进行字符串操作的时候(譬如:拼接字符串    修改)     此时需要的系统开销就会非常大!      因此:如果仅仅是修改字符串 拼接字符串  而不是创建新的对象时则建议使用StringBuilder类

String与StringBuilder分别可以在不同的情况下使用   其性能也相对是大有区别的!!

StringBuilder 是动态对象,允许自动扩充它所封装的字符串中的字符数

各有各的优势  也各有各的不足!

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
用build效率方面很高,很快,而且节约内存
回复 使用道具 举报
曹华 中级黑马 2013-12-21 18:48:09
7#
我给你复制下来了,我是没那么专业。
String.Compare
比较两个字符串的值。 返回整数值。
String.CompareOrdinal
比较两个字符串而不考虑本地区域性。 返回整数值。
String.CompareTo
将当前字符串对象与另一个字符串进行比较。 返回整数值。
String.StartsWith
确定一个字符串是否以传递的字符串开头。 返回布尔值。
String.EndsWith
确定一个字符串是否以传递的字符串结尾。 返回布尔值。
String.Equals
确定两个字符串是否相同。 返回布尔值。
String.IndexOf
返回字符或字符串的索引位置,索引位置从正在检查的字符串的开头开始。 返回整数值。
String.LastIndexOf
返回字符或字符串的索引位置,索引位置从正在检查的字符串的结尾开始。 返回整数值。
网址是:http://msdn.microsoft.com/zh-cn/library/fbh501kz.aspx

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马