您的位置:首页 > 移动开发 > Objective-C

黑马程序员_学习日记38_602基础加强(string、StringBuilder、Object.ReferenceEquals)

2012-06-04 00:06 525 查看
重写不能修改方法的访问修饰符

常用类库

1、string

l 字符串的特性:

(1)不可变性

(2)字符串池(针对字符串常量):当程序中有多个相同的字符串常量时,这时,它们在内存中共享同一块地址

string s1 = “Hello”;

string s2 = “Hello”;

则有&s1 = &s2

(3)字符串留用(针对字符串变量)

string s1 = “a”;

string s2 = “b”;

string s3 = “c”;

string x1 = “a”;

string x2 = “bc”;

string s4 =
string.Intern(s1+s2+s3);

string s5 =
string.IsInterned(x1+x2);

则 s4与s5堆地址相同

l 如何“修改字符串的值”:ToCharArray()

string msg = “abcdefg”;

char[] ch = msg.ToCharArray();

for(int i= 0;i<ch.Length();i++)

{

ch[i] = (char)(ch[i]+1);

}

Console.WriteLine(new string(ch));

l Length
指的是字符串中字符的个数,不是字节数。

IsNullOrEmpty
判断字符串是否为null或“”(空字符串)

null没有分配空间,“”分配空间不赋值。””和String.Empty是一个概念

判断字符串为空可以用msg==””,也可以用msg.Length()==0

Equals() 比较两个字符串是否相同

调用“==”判断字符串是否相同,其实内部也是调用了Equals方法

IndexOf() 在整个字符串中找子字符串(字符)第一次出现的位置,找不到返回 -1

IndexOf(“天安门”,10)
从第十个字符开始找

LastIndexOf()
从后找子串

Substring() 截取字符串

Split()

(1) 字符串作分隔符

string teams = “公牛NBA小牛NBANBANBANBA快船NBA开拓者|湖人-火箭”;

string[]teamName = teams.Split(new string[] {“NBA”} , StringSplitOption.None);

(2) 去除分割后的空实体

string[] teamName = teams.Split(new string[] {“NBA”} ,StringSplitOption.RemoveEmptyEntries);
(3)
字符串数组分隔符
string[] teamName = teams.Split(new string[]{“NBA”,”|”,”-”} ,StringSplitOptions.RemoveEmptyEntries);
Join() 把字符串数组中的每个元素用指定连接符连接,得到一个完整的字符串

stringfullName = string.Join(“★”,teamName);

Format() 拼接字符串,将拼接完的字符串返回

Trim()

Replace() 替换(可以链式编程)

msg= msg.Replace(“毛主席”,”敏感词”).Replace(“共产党”,”敏感词”);

对字符串操作要用变量接收返回值,因为字符串的不可变性。

2、StringBuilder
大量拼接字符串用StringBuilder

在进行大量字符串拼接的时候,string的问题:

(1) 内存浪费

(2) 由于String的不可变性,每次拼接都会创建一个新的string对象,耗时耗资源

通过StringBuilder拼接的字符串一般都会再转换为string

3、 什么才叫同一个对象?

堆地址相同的对象是同一个对象。不能用p3.Equals(p4)或p3==p4判断是否同一个对象,用Object.ReferenceEquals()

由于string类型重写了从Object继承下来的Equals方法,只要两个字符串中的字符完全相同就返回true或者两字符串是同一对象也返回true。所以判断两个对象是否为同一个对象不能用Equals,可以用Object.ReferenceEquals()

作业:1、动态截取某某某,获取[第一次出现的索引位置N1,获取]第一次出现的索引位置N2,相减

2、 两个值类型用ReferenceEquls返回的是不是都是false
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐