Objective-C语法之字符串NSString
Objective-C里核心的处理字符串的类就是NSString和NSMutableString这两个类,这两个类完成了Objective-C中字符串大部分功能的处理。这两个类的最主要的区别是NSString创建赋值后不能动态修改长度和内容,除非给重新赋值。而NSMutableString类似与链表的,在创建赋值后可以进行修改长度,插入,删除等操作。
NSString提供了许多创建和初始化新字符串的方法。下面这个是创建常量字符串的。 它是编译到可执行文件中的NSString的实例,它不会在内存中消失。例子:
1、创建常量字符串。
NSString *astring = @"我是字符串";
2、NSString的内存地址
当我们声明一个字符串时,NSString *aString;变量aString并不是真正包含一个字符串对象,它是指向内存中字符串对象的指针,我们称之为对象标识符,因为它是表示内存中的一个对象而不是保存这个对象,指针是一个内存位置的地址,下面考虑用“==”来比较字符串,来看个例子
NSString string1 = @"我是甲一号";
NSString *string2 = @"我是甲一号";
BOOL result = string1==string2;
这个result的值是NO,这里你对比的是内存地址,string1和string2是两个静态的对象,在内存中存储的地址是不同的,所以就是NO了。
如果这样做
NSString *string1 = @"我是甲一号";
NSString *string2 = string1;
BOOL result = string1==string2;
这时候result的值就是YES了
看个例子就明白了。下面是字符串内存地址的例子
- //内存指向
- NSString *bstring = @"我是字符串";
- NSString *astring = [[NSString alloc] init];
- NSLog(@"astring point address:0x%.8x", astring);
- NSLog(@"bstring point address:0x%.8x", bstring);
- astring=@"我是字符串";
- NSLog(@"重新赋值之后的astring point address:0x%.8x", astring);
- NSLog(@"astring:%@",astring);
- 2012-06-14 11:35:31.226 NSString[2316:f803] astring point address:0x00b72a7c
- 2012-06-14 11:35:31.227 NSString[2316:f803] bstring point address:0x000045bc
- 2012-06-14 11:35:31.227 NSString[2316:f803] 重新赋值之后的astring point address:0x000045bc
- 2012-06-14 11:35:31.227 NSString[2316:f803] astring:我是字符串
重新赋值后,astring 的地址和bstring地址一样了。
3、NSString字符串的比较
在NSString中,最直接的就是用isEqualTostring这个方法
- NSString* string1 = @"我是甲一号";
- NSString *string2 = @"我是甲一号";
- BOOL result = [string1 isEqualToString:string2];
- if (result) {
- NSLog(@"字符串相同");
- }
- 2012-06-14 11:49:10.442 NSString[2481:f803] 字符串相同
另外一个比较的方法:compare,他可以比较字符串的大小,它的返回类型是:NSOrderedAscending,NSorderedSame,NSorderedDescending(分别等于整数-1,0,1)。
- NSString* string1 = @"我是甲一号";
- NSString *string2 = @"我是甲一号";
- BOOL result = [string1 compare:string2];
- if (result == NSOrderedSame) {
- NSLog(@"字符串相同");
- }
相关推荐
84407518 2012-07-16
87214552 2015-10-27
84407518 2016-01-25
89283517 2012-06-19
zhujiangtaotaise 2020-01-01
AllenG 2013-07-07
Beatopcoder 2013-07-14
afrtooylsw 2014-05-14
让编程改变世界 2015-03-13
shqhope 2015-04-09
zoutian00 2015-05-12
huangshm 2019-01-14
86981633 2019-06-29
我的iOS王者之路 2019-06-28
好好学习天天 2019-06-28
jscjxysx 2019-06-28