objective-C Ⅱ
//数组的使用
//定义四个Student类型的变量 并初始化
andAddress:@"大唐"];
andAddress:@"花果山"];
andAddress:@"高老庄"];
andAddress:@"流沙河"];
//数组的定义和初始化(数组是以nil空作为结束的标志的)
NSArray *students=[NSArrayarrayWithObjects:stu1,stu2,stu3,stu4,nil];//定义一个数组名为 students元素类型全部为Student 元素个数为4的数组
//利用for循环使用数组中的元素
; i<; i++) {
//根据数组的索引取出相应的对象
Student *stu=[students objectAtIndex:i];
//调用取出对象的sayHi方法
[stusayHi];
}
//数组中的元素可以是多种类型
//数组元素不能存放基本的数据类型(如int float..)
//如果存放基本数据类型,要把它先转换成NSNumber的对象 例如:
],nil];//定义了一个名为array的数组,该数组中包含4个元素,分别为Student、String、Date、Number类型
//注意:在打印引用型对象是,默认的是打印类的类型和内存地址,在.m文件中改写description方法(相当于java中的toString方法),可以改变其输出形式 在.m文件中改写后的description方法
/** 在.m文件中重写后的description方法 [不用在.h文件中定义接口
]
//重写description方法 相当于java中的toString方法
-(NSString *)description//重写description方法后,让其输出姓名(也可以是其他自定义的字符串等)
{
returnname;
}
*/
//包含不同类型的数组的使用
; i<; i++) {
//根据数组的索引取出相应的对象
id arry=[arraysobjectAtIndex:i];//id为泛型 是指任意类型的对象 定义id泛型对象时不在变量前加*
//直到赋值的时候才确定是什么类型
NSLog(@"%@",arry);
}
NSLog(@"for-in的使用");
//for-in 的使用和java中的一样,循环的次数依赖与数组元素的个数
for (id tempin arrays) {
NSLog(@"%@",temp);
}
//NSArray的子类NSMutableArray为可变的数组 可以进行增删改查
// NSMutableArray *mArray=[[NSMutableArray alloc]init];
NSMutableArray *mArray=[NSMutableArrayarrayWithObjects:stu1,@"aaa",@"abc",nil];
// //NSMutableArray是可变数组,是NSArray的子类,里面的元素可以增删改查
NSLog(@"数组的长度%ld",[mArray count]);//输出数组的长度(元素的个数)调用count方法,采用长整型站位符
//向数组中添加元素
[mArrayaddObject:@"cccc"];
[mArray addObject:[NSNumbernumberWithBool:YES]];
NSLog(@"添加后的数组元素");
NSLog(@"%@",mArray);
//删除数组中的元素
的元素即第一个元素
NSLog(@"删除第一个元素后的数组元素");
NSLog(@"%@",mArray);
//注:按住windows键和鼠标左键可以查看类的.h文件,以便于我们更加清楚的了解该类中的方法,更好的使用该类
//NSMutableArray中的扩展方法
// - (void)addObject:(id)anObject;
// - (void)insertObject:(id)anObject atIndex:(NSUInteger)index;
// - (void)removeLastObject;
// - (void)removeObjectAtIndex:(NSUInteger)index;
// - (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
二、集合的使用
集合中只能存放对象类的元素,要想存放基本数据类型的元素,要先将其转换为对象类再进行存放,集合中存放的数据元素可以是不同类型的和数组一样
//Set集合
//定义和初始化
NSSet *set=[NSSetsetWithObjects:@"aa",@"bb",@"cc",nil];
//set集合中的元素是无序的唯一存在的相互独立的长度是不可变的
//set集合的使用
NSLog(@"%@",set);
NSLog(@"%@",[setanyObject]);//取出set里面的所有元素
//Set集合的子类NSMutableSet类似于Array的子类是可变长度的集合 也可以增加删除元素
//按住windows键和鼠标左键可以查看其中定义的方法来进行使用
比如要得到一个起始位置为10,3个长度的范围,它可以有三种方式创建:
➢
第一种调用函数可以这么写:
NSRange range =NSMakeRange (10,3);
➢
第二种直接给成员赋值:
NSRange range;
range.location=10;
range.length=3;
➢
第三种应用C语言的聚合结构赋值机制:
NSRange range ={10,3};
字符串的使用:(如下)
int main(int argc,const char * argv[])
{
//一、字符串的创建
//第一种直接创建
NSString *str=@"zhangsan";
//创建空的字符串
NSString *str1=[[NSStringalloc]init];
NSLog(@"str=%@,str1=%@",str,str1);
//依赖创建 str2相当于是str的指针
NSString *str2=[NSStringstringWithString:str];//str2依赖str,str释放后,str2变空
NSLog(@"str2=%@",str2);
//第四种重点
];
NSLog(@"%@",str3);
//二、字符串的长度
NSLog(@"str3的长度是:%ld",[str3 length]);
//三、字符串的比较
NSString *str4=[NSStringstringWithFormat:@"zhangsan"];
if(str==str4)//和java中一样,采用==来判断两个字符串是否相等时,判断的是地址是否相等,而不是内容是否相等
{
NSLog(@"== 相等");
}
if ([strisEqualToString:str4]) {//和java中的类似,判断两个字符串的内容是否相等,采用isEqualToString函数
NSLog(@"isEqualToString 相等");
}
//四、字符串的大小比较
//采用 compare方法,返回枚举类型[-1,0,1],NSOrderedAscending(1)升序,前者大于后者、NSOrderedSame(0)相等,前者等于后者、NSOrderedDescending(-1)前者小于后者
//compare从第一个字母开始往后比较,比较的是字母的ASC码
NSString *str5=@"abc";
switch ([str4 compare:str5] ) {
caseNSOrderedAscending:
NSLog(@"大于");
break;
caseNSOrderedSame:
NSLog(@"等于");
break;
caseNSOrderedDescending:
NSLog(@"小于");
break;
default:
break;
}
//五、前缀 后缀 的判断
//后缀的判断用 hasSuffix函数返回bool类型
NSString *str6=@"IOS.doc";
if ([str6hasSuffix:@".doc"]) {//判断str6是否是以.doc结尾
NSLog(@"这是一个word文档");
}
//前缀的判断用 hasPrefix函数返回bool类型
NSString *str7=@"http://www.baidu.com";
if ([str7hasPrefix:@"http://"]) {//判断str7是否以http://开头
NSLog(@"这是一个网址");
}
//六、查找子字符串 rangeOfString函数
//NSRange为一个结构体,在定义变量的时候不需要在变量前加*
//NSRange包含两个成员:location和length;其中localtion表示字符串的位置(一般都是从0开始的),length表示字符串的长度表示一个字符串的范围
NSRange range=[str7 rangeOfString:@"www"];//定义一个结构体变量,并为其赋初值
if (range.location!=NSNotFound)//查找子字符串在父字符串中的位置range.location
{
NSLog(@"location:%ld,length:%ld",range.location,range.length);
}else
{
NSLog(@"未找到字符串");
}
//七、截取子字符串
的位置到最后(包含第七个位置)
]);//从开头到第七个位置(不包含第七个位置)
NSLog(@"%@",[str7substringWithRange:range]);//从range范围截取字符串
//八、字符串的转换
NSString *str8=@"123";
int num=[str8intValue];//将字符串str8转换成int基本类型
NSLog(@"%d",num);
NSLog(@"%@",[str7 uppercaseString]);//转换成大写
NSLog(@"%@",[str7 lowercaseString]);//转换成小写
NSLog(@"%@",[str7 capitalizedString]);//每句首字母大写
//九、字符串的替换
//1、stringByReplacingOccurrencesOfString方法(全部替换)
NSString *str9=@"2B青年aa,2B青年dd,2B青年ff,2B青年xx";
//将字符串str9中的“2B”替换成“文艺”
NSLog(@"%@",[str9 stringByReplacingOccurrencesOfString:@"2B"withString:@"文艺"]);
//2、stringByReplacingCharactersInRange方法(在一定范围内替换)
) withString:@"文艺"]);//将0~2范围内的子字符串替换成目标字符串替换的长度可以不一样
//十、字符串的切割 返回一个数组
NSArray *arr=[str9 componentsSeparatedByString:@","];//以“,”为界进行字符串的切割,将切割后的字符串放进arr数组中
NSLog(@"%@",arr);
//十一、字符串的拼接拼接后的新字符并没有改变原字符串中的内容而是生成了一个新的字符串
// NSString *str8=@"123";
//第一种、直接在原字符串后加新字符串进行拼接
NSLog(@"%@",[str8stringByAppendingString:@"abc"]);
//第二种、采用字符串格式符进行拼接
]);
//十二、可变字符串 NSMutableString
NSLog(@"可变字符串");
// NSMutableString为NString的子类,继承NSString所有得方法
NSMutableString *mstr=[[NSMutableStringalloc]init];//定义一个空字符串
NSLog(@"%@",mstr);//输出
//1、拼接字符串 与NSString不同的是 NSMutableString拼接字符串是在原字符串的基础上拼接的,没有生成新的字符串,而是改变了原来字符串的样式
[mstr appendString:@"iphone5"];//普通拼接方式
NSLog(@"%@",mstr);//输出
[mstr ];//format拼接方式
NSLog(@"%@",mstr);//输出
//2、删除字符串中的字符删除一个范围
NSRange rang=[mstr rangeOfString:@"ipad"];//查找“ipad”所在的范围
if(rang.location!=NSNotFound)
{
[mstr deleteCharactersInRange:rang];
}
else
{
NSLog(@"未找到字符串,删除失败。");
}
NSLog(@"%@",mstr);
;
}
int main(int argc, const char * argv[])
{
//第一题:将Hello World and Sunshine 子复查unzhong的“World”替换为“iBokan” 两种方式
NSString *str=@"Hello World and Sunshine";
NSLog(@"%@",str);
NSLog(@"%@",[str stringByReplacingOccurrencesOfString:@"World"withString:@"iBokan"]);
NSLog(@"%@",str);
) withString:@"iBokan"]);
//第二题:求字符串“158”和“39”按十进制数值做差后的结构以字符串形式输出
NSString *num1=@"158";
NSString *num2=@"39";
int n1=[num1 intValue];
int n2=[num2 intValue];
int result=n1-n2;
NSString *jieguo=[NSString stringWithFormat:@"%d",result];
NSLog(@"%@",jieguo);
//第二题可以缩写为:
,[NSStringstringWithFormat:@"%d",[@"158"intValue]-[@"39"intValue]]);
;
}