类方法和字符串
类方法
【说明】以‘+’开头的方法,通过类名调用
+ (void)print
{
//类方法不能使用成员变量
//_age = 10;
//类方法不能调用对象方法
//[self test];
NSLog(@"This is class + method");
[self test1];
}
//调用类方法
[JYDog print];
【特点】
1、可以和对象方法同名
2、不能访问成员变量
3、不能调用对象方法
2和3都是因为没有对象
【作用】
1、创建对象或简单地创建对象
2、提供简洁易用的对外接口
3、创建单例对象
是一种设计模式,所有创建对象的方法都只能创建一个对象
【说明】
1、Foundation.h导入了几乎所有的C常用的基本的头文件,
离开它不能写出OC的代码。
2、Foundation.h提供了三大基本类库:【字符串】【数组】【字典】
3、程序中可以使用两种字符串C字符串和OC字符串,
以后只要不做特别说明默认使用OC字符串。
一、不可变字符串NSString
1、创建
//最简单的方式创建
NSString *str1 = @"我是OC字符串";
//用一个字符串创建另一个字符串
NSString *str2 = [[NSString alloc] initWithString:str1];
//格式化的创建字符串
NSString *str3 = [[NSString alloc] initWithFormat:@"%d %d %.2f",12,34,5.67];
//用C字符串创建
NSString *str4 = [[NSString alloc] initWithUTF8String:"我是C创建OC字符串"];
//每一个initWith都对应一个stringWith的类方法
NSString *str5 = [NSString stringWithString:str2];
NSString *str6 = [NSString stringWithFormat:@"%d,%.2f",250,3.14];
NSString *str7 = [NSString stringWithUTF8String:"abcdefg"];
2、长度
NSUInteger len = [str length];
3、获取单个字符
unichar ch = [str characterAtIndex:8];
NSLog(@"ch = %C", ch);
4、比较
1、比较是否相等
BOOL ret = [str1 isEqualToString:str2];
2、比较字符串大小
NSComparisonResult ret2 = [str1 compare:str2];
NSOrderedAscending 右边大
NSOrderedSame 一样大
NSOrderedDescending 左边大
3、不区分大小写的比较
ret2 = [str3 caseInsensitiveCompare:str4];
5、查找子串范围(首次出现的位置)
NSRange range = [str rangeOfString:@"蓝翔"];
6、子串提取
NSString *subStr1 = [str2 substringToIndex:3];
NSString *subStr2 = [str2 substringFromIndex:5];
NSRange ran = {3, 3};
NSString *subStr3 = [str2 substringWithRange:ran];
NSString *subStr3 = [str2 substringWithRange:
NSMakeRange(3, 3)];
编外方法:
1、字符串转数据(类似于atoi,atof)
int intV = [str3 intValue];
float floatV = [str3 floatValue];
2、OC字符串转C字符串
const char *p = [@"abc" UTF8String];
NSString * ptr = [str2 uppercaseString];//将字符串中的所有小写字符转换成大写 不改变原来的字符串
ptr = [str1 lowercaseString];//将字符串中的所有大写字符转换成小写 不改变原来的字符串
ptr = [str3 capitalizedString];//将字符串中出现的第一个字母转换成大写,其余字母小写
二、可变字符串NSMutableString
【特有方法】
1、设置(set)
[mStr setString:@"abcd"];
2、追加 (append)
//追加一个字符串
[mStr appendString:@"123"];
//格式化的追加
[mStr appendFormat:@"%d%c",250,'A'];
3、插入 (insert)
//在指定位置插入字符串
[mStr insertString:@"hello" atIndex:2];
4、删除(delete)
//删除指定范围内的字符
[mStr deleteCharactersInRange:NSMakeRange(2, 5)];
5、修改(replace)
//用字符串替换某个范围内的字符
[mStr replaceCharactersInRange:NSMakeRange(2, 5)
withString:@"hello"];
练习题:
0、练熟今天所有的方法的使用,包括pdf文档
1、已知有两个字符串@“hello”和@“world”,
用空格将它们拼接到一起。
2、输入两个表示数字的C字符串,求出两个数字的和,
要求和也要以OC字符串形式表示。
3、已知字符串NSString *str = @“I love zhengzhou”,
找出love的范围
4、已知字符串NSString *str = @“I love zhengzhou”,
从第3个字符提取到第5个字符
5、If you do not leave me, I will by your side until the life end.提取you到end之间的字符串,要求:不得查数
6、编写一个分数的类
@interface JYFraction : NSObject
{
int _numerator; //分子
int _denominator; // 分母
}
// 初始化方法
- (id)initWithNumerator:(int)numerator andDenominator:(int)denominator;
// setter方法
- (void) setNumerator:(int)newNumerator;
- (void) setDenominator:(int)newDenominator;
// getter方法
- (int) numerator;
- (int) denominator;
// 同时设置分子 分母
- (void) setNumerator:(int)newNumerator andDenominator:(int)newDenominator;
// 当前分数 + fraction2 (包含 + - * /)
- (void) addFraction:(JYFraction *)fraction2;
- (void) subFraction:(JYFraction *)fraction2;
- (void) mulFraction:(JYFraction *)fraction2;
- (void) divFraction:(JYFraction *)fraction2;
// 约分
- (void) reductionOfFraction;
// 打印分数
- (void) printFraction;
@end