iOS开发学习第十七课——NSArray(不可变数组) 和 NSMutableArray(不可变数组)

//数组  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;
}

你可能感兴趣的:(iOS开发学习第十七课——NSArray(不可变数组) 和 NSMutableArray(不可变数组))