//
// main.m // oc第四讲
#import <Foundation/Foundation.h> #import "book.h"
int main(int argc, const char * argv[]) { #pragma mark --NSString 字符串---
//NSString不可变字符串,即创建之后不能修改(进行一个增 删 改的操作)(readonly)只读 //创建一个空的字符串 // NSString *string=[[NSString alloc]init]; // NSLog(@"%@",string); //
// //根据给定的常量去创建NSString对象(创建常量区的字符串) // NSString *string1=@"imac"; // NSLog(@"%@",string1); // NSLog(@"%p",string1); //
// //创建堆区的字符串 // NSString *string2=[[NSString alloc]initWithFormat:@"iphone"]; //
// NSLog(@"%@",string2); // NSLog(@"%p",string2); //
//
// //如果创建的字符串中会有其他变量 那么我们就要使用initWithFormat 这种方式去创建 // //可以将我们一些数值拼接到我们字符串中 // NSInteger num=6; // NSString *string3=[[NSString alloc]initWithFormat:@"iphone%lds",num]; // NSLog(@"%@",string3); //便利构造器方法 // NSString *str1=[NSString string]; // NSString *str2=[NSString stringWithString:@"iphone"]; // //等同于 // NSString *str3=@"iphone"; //
// NSLog(@"%@",str2); //
//获取字符串长度 //
// NSString *str=@"huluwatum"; // // NSUInteger length=[str length]; // NSLog(@"%lu",[str length]); //
//
//
// //判断前缀,返回值为bool类型,所以我们使用%d占位.返回值只有两种结果 0,1; // BOOL result=[str hasPrefix:@"hu"]; // NSLog(@"%d",result); //
//
// //判断后缀 // BOOL resu=[str hasSuffix:@"tum"]; // NSLog(@"%d",resu); //字符串截取(获取字符串); // //from 打印出从对应的下标开始到最后的字符串 // NSString *str=@"huluwaaotum"; // NSString *substring=[str substringFromIndex:4]; // NSLog(@"%@",substring); //
//
// NSString *substring1=[str substringFromIndex:6]; // NSLog(@"%@",substring1); //
// //to 打印出到指定下标之前(不包括当时下标)的字符串 // NSString *subs=[str substringToIndex:4]; // NSLog(@"%@",subs); //
// //NSRange:他是一个结构体 他有两个参数:location(位置),lenght(长度) //
//
//
// //从下标为2的字符串截取,截取的长度是3个字符 // NSRange range={2,3}; //
// NSString *substr=[str substringWithRange:range]; //
// NSLog(@"%@",substr); //
//拼接字符串, //1.并没有改变原有的字符串,只是将拼接好的字符串作为了返回值用新的字符串去接收. // NSString *str=@"iphone"; // NSString *str1=@"6s"; // //这里是将str1这个字符串拼接到str这个字符串之后,形成了新的字符串 // NSString *newstr=[str stringByAppendingString:str1]; // NSLog(@"%@",newstr); //
// //2.stringByAppendingFormat如果后边拼接 有两个字符串并没有使用占位符的话,系统会默认值拼接第一个字符串,如果使用占位符的话,那么会将占位符当中的字符串进行拼接. // NSString *newstr2=[str stringByAppendingFormat:str1,str]; // NSLog(@"%@",newstr2); //
//
// NSString *newstr1=[str stringByAppendingFormat:@"%@,%@",str1,str]; //
// NSLog(@"%@",newstr1); //
//替换: // //将我们第一个中的字符串替换成为第二个参数中的字符串 // NSString *str=@"huluwaxiaojingang"; // NSString *newstr=[str stringByReplacingOccurrencesOfString:@"hul" withString:@"HUL"]; // NSLog(@"%@",newstr); //
//
//
// //字符串比较 // NSString *str3=[[NSString alloc]initWithFormat:@"huluwa"]; // NSString *str4=[[NSString alloc]initWithFormat:@"jinggang"]; //
// //方法是 isEqualToString//比较的是两个字符串当中的内容 // if ([str3 isEqualToString: str4]) { // NSLog(@"字符串相等"); // }else{ // NSLog(@"字符串不相等"); //
// } //
// // == 双等于号 比较是两个字符串的地址,如果地址一样,说明内容一样 //
//
// if (str3==str4) { // NSLog(@"字符串相等"); // }else{ // NSLog(@"字符串不相等"); //
// } //
//
//
//
// //大小写转换 // //将字符串转化为大写 // NSString *string=@"ios"; // NSString *newstring=[string uppercaseString]; // NSLog(@"%@",newstring); // //转换为小写 // NSString *newstring1=[string lowercaseString]; // NSLog(@"%@",newstring1); //
// //首字母大写 // NSString *newstring2=[string capitalizedString]; // NSLog(@"%@",newstring2); //给定一个图片,判断字符串中是否以 png 结尾,如果是就替换城 jpg,如果不是就拼接 .jpg // NSString *string=@"123.jtg"; //
// BOOL str=[string hasSuffix:@"png"]; //
//
// if (str) { // string=[string stringByReplacingOccurrencesOfString:@"png" withString:@"jpg"]; // }else { //
// string=[string stringByAppendingString:@".jpg"]; //
// } // NSLog(@"%@",string);
#pragma mark --可变字符串NSMutablestring--
//可变字符串 // NSMutableString是NSString的子类 // //首先创建一个可变字符串 // NSMutableString *nutablestr=[NSMutableString stringWithString:@"12344"]; // NSLog(@"%@",nutablestr); //
// //拼接: //
// NSString *string123=[NSString stringWithFormat:@"asdfg"]; //
//[nutablestr appendString:@"asdfg"]; // [nutablestr appendFormat:@"%@",string123]; // NSLog(@"%@",nutablestr); //
//插入 // //讲一个字符串插入到指定下标位置 // [nutablestr insertString:@"abc" atIndex:3]; // NSLog(@"%@",nutablestr); //
//
// //删除 // //NSRange // NSRange delrange={2,4}; // //从下标为2的位置开始删除长度为4的字符串 // [nutablestr deleteCharactersInRange:delrange]; // NSLog(@"%@",nutablestr); //
/* 不可变字符串的修改操作本质上就是得到一个新的字符串 不可变字符串的修改方法以string开头,有返回值 可变字符串的修改方法没有返回值,他修改的是原字符串, //使用 nsmutablestring给定一个图片,判断字符串中是否以 png 结尾,如果是就替换城 jpg,如果不是就拼接 .jpg */
// NSMutableString *string=[NSMutableString stringWithFormat:@"12345.jpg"]; // //判断 // if ([string hasSuffix:@"png"]) { // //可变字符串替换 //rangeOfString 这个方法就是返回我们png 在当前字符串中所在的位置 // NSRange range=[string rangeOfString:@"png"]; // //替换 // [string replaceCharactersInRange:range withString:@"jpg"]; //
// }else{ //
// //拼接 // [string appendString:@".jpg"]; //
//
// } // NSLog(@"%@",string);
#pragma mark -- 数组对象NSArray--
//数组对象 //不可变数组 // //arrayWithObjects便利构造器的方法,创建了一个不可变数组对象,结尾nil表示的是结束 // NSArray *array=[NSArray arrayWithObjects:@"a",@"b",@"c",@"d", nil]; // NSLog(@"array=%@",array); //
// //获取数组当中元素个数 // //count // NSLog(@"array=%ld",[array count]); //
// //获取数组当中某一个位置(下标)上的值 // NSLog(@"index=%@",[array objectAtIndex:1]); //
//
// //可变数组 //
// NSMutableArray *muarray=[NSMutableArray arrayWithCapacity:0]; //
// //给可变数组添加元素 // //将上边array(不可变数组)添加到可变数组muarray中; //
// [muarray addObjectsFromArray:array]; // NSLog(@"muarray=%@",muarray); //
// //插入 //
//
// //将我们对象插入到指定下标的位置当中 //
// [muarray insertObject:@"2" atIndex:2]; // NSLog(@"muarray=%@",muarray); //
//
// //删除 // //删除指定下表的元素 // [muarray removeObjectAtIndex:1]; // NSLog(@"muarray=%@",muarray); //删除数组当中所有元素 //[muarray removeAllObjects]; // NSLog(@"%@",muarray); //遍历数组元素 //for (这里放的是我们要遍历数组当中元素的类型 in 这里放的是遍历的数组) { // } //
// for (NSString *str in muarray) { // NSLog(@"%@",str); // } //图书管理 //1.使用可变数组管理所有书籍(定义 book类,包含书名,价格) //2.数组可以添加删除书籍 //3.可以从数组根据书名查找书籍且修改书籍价格 //4展示所有书籍清单 // book *b=[[book alloc]initWithName:@"如来神掌" price:10]; // book *b1=[[book alloc]initWithName:@"到爆天" price:20]; // book *b2=[[book alloc]initWithName:@"葵花宝典" price:2]; // book *b3=[[book alloc]initWithName:@"九阴真经" price:66]; //
// //创建一个可变数组 //
// NSMutableArray *array=[NSMutableArray arrayWithObjects:b,b1,b2,b3, nil]; //
//// for (NSString *str in array) { //// NSLog(@"%@",str); //// }
//
//
// //添加 //
// book *b5=[[book alloc]initWithName:@"悲伤牛" price:88]; // //往可变数组当中添加新的书籍(对象) // [array addObject:b5]; // //遍历 // for (NSString *str in array) { // NSLog(@"%@",str); // } //
// //删除 // [array removeObject:b1]; // for (book *b in array) { // NSLog(@"%@,%.2f",b.name,b.price); // } //
//
// for (book *b in array) { // if ([[b name]isEqualToString:@"如来神掌"]) { // [b setPrice:200]; //
// } // NSLog(@"%@,%.2f",b.name,b.price); // }
#pragma mark-- 值对象--
// NSNumber //创建一个NSNumber对象 //将我们基本数据类型转换成对象(值对象) // numberWithInt将int类型转换成NSNumber类型 //
// NSNumber *num=[NSNumber numberWithInt:10]; // NSLog(@"%@",num); //
// //intvalue:将我们值对象转化为基本数据类型 // NSLog(@"num=%d",[num intValue]); //
#pragma mark -- NSValue---
//
// //NSValue 数值类,可以将指针或结构体转化成对象 //
// int a=10; // int *p=&a; // //将指针类型转化成对象类型 // NSValue *value=[NSValue valueWithPointer:p]; // NSLog(@"%@",value); // //将对象类型转化成指针类型 // int *newp=[value pointerValue]; // NSLog(@"%d",*newp); //NSRange // NSRange range={13,15}; // //将 NSRange转换成nsvalue对象 // NSValue *rangevalue=[NSValue valueWithRange:range]; // NSLog(@"%@",rangevalue); //
// //将nsvalue 转化成nsrange // NSRange newrange={0}; // newrange=[rangevalue rangeValue]; // NSLog(@"%lu,%lu",newrange.location,newrange.length);
/* 比较 compare: */
//使用语法糖创建NSNunber // NSArray *array=@[@1,@2,@3,@4];
NSNumber *num1=@100; NSNumber *num2=@100; //NSComparisonResult//枚举类型
NSComparisonResult result=[num1 compare:num2]; NSLog(@"%ld",result); switch (result) { case NSOrderedAscending://-1
NSLog(@"前小后大"); break; case NSOrderedDescending://1
NSLog(@"前大后小"); break; case NSOrderedSame://0
NSLog(@"前后相等"); break; default: break; } return 0; }
// book.h
#import <Foundation/Foundation.h> @interface book : NSObject { NSString *_name;//书名
CGFloat _price;//价格
} -(void)setName:(NSString *)name; -(NSString *)name; -(void)setPrice:(CGFloat)price; -(CGFloat)price; -(instancetype)initWithName:(NSString *)name price:(CGFloat)price; +(instancetype)bookWithName:(NSString *)name price:(CGFloat)price; @end
//
// book.m
#import "book.h" @implementation book -(void)setName:(NSString *)name{ _name=name; } -(NSString *)name{ return _name; } -(void)setPrice:(CGFloat)price{ _price=price; } -(CGFloat)price{ return _price; } -(instancetype)initWithName:(NSString *)name price:(CGFloat)price{ self=[super init]; if (self) { _name=name; _price=price; } return self; } +(instancetype)bookWithName:(NSString *)name price:(CGFloat)price{ book *b=[[book alloc]initWithName:name price:price]; return b; } @end