//数组 NSArray(不可变数组) 和 NSMutableArray(不可变数组)
//NSMutableArray 是 NSArray 的子类
//数组是一个大容器,可以存储不同类的多个对象,切记:数组中必须存的是对象
#import
int main(int argc, const char * argv[]) {
@autoreleasepool {
//创建数组对象 使用初始化方法创建对象
// NSString *str = @"HaiFeng";
NSArray *arr = [[NSArray alloc]initWithObjects:@"HaiFeng",@"JiangTao",@"XiaoLong",@"YiXuan", nil];//nil代表了数组对象元素的结束标志
NSLog(@"%@",arr);
//使用便利构造器创建对象
NSArray *arr2 = [NSArrayarrayWithObjects:@"DouDou",@"Duck",@"Duke",@"Frank",@"Jason",@"xiao",nil];
NSLog(@"%@",arr2);
//如何访问数组中的单个元素
NSLog(@"%@",arr2[3]);
//如何求数组中 元素的个数
NSUInteger arrCount = [arr2 count];
NSLog(@"%lu",arrCount);
//如何访问数组中的单个元素 系统中的几种方法
NSString *jasonStr = [arr2 objectAtIndex:4];
NSLog(@"jasonStr = %@",jasonStr);
//访问数组中的第一个元素
NSString *firstArr = [arr2 firstObject];
NSLog(@"firstArr = %@",firstArr);
//访问数组中最后一个元素
NSString *lastArr = [arr2 lastObject];
NSLog(@"%@",lastArr);
//数组遍历 使用for循环
for (int i = 0; i < [arr2 count]; i++) {
NSLog(@"%@",[arr2 objectAtIndex:i]);
}
//for in 遍历 id泛类型,指代所有的对象类型
//for in 每遇到一个对象元素,则会取出这个元素,执行for in里面的语句,直到数组当中没有了对象元素为止
for (id elementStr in arr2) {
NSLog(@"%@",elementStr);
}
//根据元素求索引(下标)的位置
//求Jason元素所在的索引位置,一旦我们的元素不再目标数组中的话,则会返回一个无穷大的数
NSUInteger jasonIndex = [arr2 indexOfObject:@"Jason"];
NSLog(@"%lu",jasonIndex);
//如何判断我们所给的元素是否在目标数组中
BOOL isExit = [arr2 containsObject:@"DouDou"];
NSLog(@"isExit = %d",isExit);
//判断两个数组是否相等
NSArray *arr3 = [NSArrayarrayWithObjects:@"DouDou",@"Duck",@"Duke",@"Frank",@"Jason",@"xiao",nil];
//判断两个数组是否相等,判断的是数组里的元素是否相等,如果两个数组中的元素一样但位置不一样,则认为不相等
BOOL isEqual = [arr2 isEqualToArray:arr3];
NSLog(@"isEqual = %d",isEqual);
//可变数组 NSMutableArray 可变数组是NSArray的子类
//用初始化方法创建对象,Capacity 容量,动态分配空间
NSMutableArray *mutArray = [[NSMutableArray alloc] initWithCapacity:1];
NSLog(@"mutArray = %@",mutArray);
//增加可变数组里的元素 每增加一个元素,数组里的元素个数+1
[mutArray addObject:@"DouBi"];
NSLog(@"mutArray = %@",mutArray);
[mutArray addObject:@"FeiFei"];
NSLog(@"%@",mutArray);
[mutArray addObject:@"Kobe"];
[mutArray addObject:@"XiaoLong"];
NSLog(@"%@",mutArray);
//添加某个数组里的所有的元素
NSArray *arrOne = [NSArray arrayWithObjects:@"aa",@"bb",@"cc", nil];
[mutArray addObjectsFromArray:arrOne];
//9.插入元素 按照指定位置插入,并不影响其他元素
[mutArray insertObject:@"Hello" atIndex:1];
NSLog(@"mutArray = %@",mutArray);
//10.删除数组里的元素
//删除指定的元素
[mutArray removeObject:@"DouBi"];
NSLog(@"mutArray = %@",mutArray);
//根据下标删除对应的元素
[mutArray removeObjectAtIndex:3];
NSLog(@"mutArray = %@",mutArray);
//删除最后一个元素
[mutArray removeLastObject];
NSLog(@"mutArray = %@",mutArray);
//根据之思指定范围内删除元素 第一个参数代表了给定数组的元素的下标,从此下标开始往后确定一个范围内删除,第二个参数是用来确定范围的,其值说明总共查找的元素的范围
//如果此范围内有这个元素,则删除,有相同对象的话则全部删除
[mutArray removeObject:@"Hello" inRange:NSMakeRange(0, 1)];
NSLog(@"mutArray = %@",mutArray);
//11.改变数组里元素的值 根据给定的下标修改对应的元素
[mutArray replaceObjectAtIndex:2 withObject:@"dd"];
NSLog(@"mutArray = %@",mutArray);
//12.交换两个元素的位置
[mutArray exchangeObjectAtIndex:0 withObjectAtIndex:2];
NSLog(@"mutArray = %@",mutArray);
//定义一个数组,当做一个元素添加到原有的数组当中,此时这个数组是原有数组的一个元素而已
NSArray *arrTwo = [NSArray arrayWithObjects:@"www",@"yyy",@"zzz",nil];
[mutArray addObject:arrTwo];
NSLog(@"mutArray = %@",mutArray);
NSLog(@"count = %lu",[mutArray count]);
//总结:数组里是存放有序元素的集合,必须保证数组里的元素全部都是对象,而且可以存放相同的元素
//NSNumber 的作用,将基本数据类型转化为OC中的对象类型(也就是NSnumber类型)
//1.将整型数转化为NSNumber对象类型
//数组当中不能直接存储基本数据类型,需要将基本数据类型转化为对象类型,再存储到数组当中
int a = 10,b = 83,c = 23;
NSNumber *numA = [NSNumber numberWithInt:a];
NSNumber *numB = [NSNumber numberWithInt:b];
NSNumber *numC = [NSNumber numberWithInt:c];
NSArray *conArr = [NSArray arrayWithObjects:numA,numB,numC, nil];
NSLog(@"%@",conArr);
//将浮点数转化为对象类型
float f = 2.5;
NSNumber *numf = [NSNumber numberWithFloat:f];
//将基本数值类型字符串转化为对象类型
char symbol[20] = "MeiYangYang";
NSNumber *numSymbol = [NSNumber numberWithChar:symbol[20]];
//将基本数值类型BOOL类型转化为对象类型
BOOL isTure = YES;
NSNumber *boolNumber = [NSNumber numberWithBool:isTure];
int random = 0;//随机出的每一个整型数
NSMutableArray *mutArray1 = [NSMutableArray arrayWithCapacity:1];//创建一个存储随机出的10个整型数对应的对象,此时数组为空
for (int i = 0; i < 10; i++) {
random = arc4random() % 41 + 10;
//将整型数值类型转化为对象类型,以供添加到数组当中
NSNumber *number = [NSNumber numberWithInt:random];
//将随机出的(转化过的)对象添加在到可变数组当中
[mutArray1 addObject:number];
}
NSLog(@"%@",mutArray1);
int sum = 0,max = 0;//用来存储对象(基本整型数)的和
//遍历数组得到每一个对象,然后求和
for (id object in mutArray1) {
//将对象类型转化为基本数据类型
sum = sum + [object intValue];
//求最大值
if ([object intValue] > max) {
max = [object intValue];
}
}
printf("sum = %d,max = %d",sum,max);
}
return 0;
}