字符串、深浅拷贝

字符串类型

NSString类,其对象内容不可变。对象化C语言的字符串,用@""表示字面常量。可以与基本数据类型进行转换。

创建字符串 常量:

NSString *str=@"This is a NSString Object";
创建一个空字符串:
NSString *str1=[[NSString alloc] init];
NSString *str2=[NSString string];

用格式化字符串创建一个字符串对象:

NSString *str=[[NSString alloc] initWithFormat:@"%d",3];
NSString *str=[NSString stringWithFormat:@"%f",1.23];

Tips:和C语言中的sprintf类似,都是通过格式化字符串拼装字符串

字符串的比较

比较两个字符串对象的类容是否相同

NSString *str1=@"abc";
NSString *str2=@"abc";
if([str1 isEqualToString: str2]){
           NSLog(@"相同");
}

比较两个字符串对象是否为同一个对象
<pre name="code" class="objc">NSString *str1=@"abc";
NSString *str2=@"abc";
if(str1==str2){
           NSLog(@"他们是同一个地址");
}


Tips:其本质就是指针变量的值的比较

比较两字符串的大小:

NSString *str1=@"abc";
NSString *str2=@"abc";
NSComparisonResult result=[str1 compare:str2];
if(result == NSOrderedDescending){
           NSLog(@"str1 > str2");
}

字符串转换

大小写转换

NSString *str=@"Divein edu";     调用方法[str uppercaseString]; 将str全部变为大写字母,[str1lowercaseString];将str全部变为小写字母,

[str1 capitalizedString]);每个单词首字母大写。


把字符串转换成基本数据类型

int a=[str  intValue]; 其他都类似于转换成int值类型

把字符串转换为数组

NSString *str=@"2013.04.05.06";

NSArray *arr=[str componentsSeparatedByString:@"."];


取子串

NSString *str = @"www.diveinedu.com";

  //从开始位置截断到指定的index位置,不包含该index位置的字符
NSString *substr = [str substringToIndex:3];// @"www”

  //从指定的index位置开始,截取到字符串末尾,包括该index位置的字符 
NSString *substr1 = [str substringFromIndex:4];// @"diveinedu.com”

NSRange range  = {4,9};
  //从index为4开始,取9个字符长度, // @"diveinedu"
NSString *substr2 = [str substringWithRange:range]; 

字符串连接

 NSString *str  = @"http://";
 NSString *str1 = @"www.diveinedu.com";
 NSString *url  = [NSString stringWithFormat:@"%@%@", str, str1];
 NSString *url1 = [str stringByAppendingString:str1];
 NSString *url2 = [str stringByAppendingFormat:@"%@", str1];
  //以上url url1 url2 三个字符串的内容都是一样的.三种不同的拼接方式

字符串查找

NSString *url = @"www.diveinedu.com";
 NSRange r = [url rangeOfString:@"divein"];
 if(r.location != NSNotFound)
 {
    NSLog(@"报告,我找到divein了,他躲在%ld的位置", r.location);
 }

深浅拷贝

深浅拷贝前提是:是实现NSCopying或者NSMutableCopying协议。

浅拷贝只是复制对象本身,对象的属性和包含的对象不做复制。

深拷贝则对对象本身复制,同是对 对象的属性也进行复制。

深浅拷贝的本质区别是对象或者对象属性的内存地址是否一样,一样则为浅拷贝,不一样则为深拷贝。

Foundation框架支持复制的类,默认是浅拷贝。其中对Foundation中不可变的对象进行copy时作用相当于retain。

而如果是mutablecopy时,无论对象是否可变,副本是可变的,并且实现了真正意义上的copy。如果对可变对象进行copy,

副本对象是不可变的,同样是真正意义上的copy。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值