Swift学习之路之Arry
Array数组
OC中有NSArry和NSMutableArry这两种概念。Swift中其实也有Array和NSMutableArray,但它并不推荐你使用NSMutableArray。我们主要谈Array.
我们把数组想象成一列火车。变量名就是车名,()代表实例化火车,capacity代表车厢数,数组中元素代表车厢代号。
Capacity是Swift中数组特有的一个属性,代表数组容量。也可以是作为这个数组所占的内存,当数组需要插入超过其容量的元素时,这个容量会*2,即这个容量其实是一些固定的值1,2,4,8,16,32…2^n(2的n次方)。容量增大,代表这个数组动态分配到的内存在增大。但既然是容量(内存),在array1+array2时,只会把数组中的元素送过去。即array的车厢代号个数(count)会影响array1.capacity,但array2.capacity不会对array1造成任何影响。
火车车厢数(capacity)>=车厢代号数(count)
空闲车厢数 = 火车车厢数(capacity)- 车厢代号数(count) //空闲车厢只会在火车尾部
Array实例化
//告诉大家有一列火车,车厢以数字代号,但是没车头的(不推荐)
var array1:[String]
var array1:Array<Int>
array1 = [] //上面方法创建的火车,因为没有自己的车头只能问人家借个头
array1 = [1,2] //头和车厢都借过来了
//告诉大家有列车厢以数字代号的火车,车头有了()即alloc init (强烈推荐)
var array1 = Array<Int>()
//判断是否为空数组
array1.isEmpty = ture //火车车厢是不是都没代号
array1.capacity = 0 //火车一个车厢都没有
array.count = 0 //火车一个车厢代号都没有
//增加车厢代号的方法,车厢一般你方法对是自增加的
array1 = [1, 2] //使array1等于[1,2]这个火车,这样array1不管有没有实例化都会被实例化
array1.insert(0, atIndex: 0) //在0这个位置插入一节代号为19的车厢,原先0位置车厢向后挪,整个数组长度+1,可供插入的最大位置为array.count
array1.append(3) //在火车末尾加上一节代号为3的车厢
array1 += [4] //效果等同于array1.append(4) 。类似nt自增长的写法
//追加数组
array2 = array1 + [5,6] //数组相加,类似int相加的写法
array1 += [7,8] //自增加
//修改车厢代号的方法
array1[0] = 123 //只能修改有代号的车厢,不能给无代号的车厢添加代号
附言:在NSMutableArray中这个方法可以给无代号的车厢代号,但是NSMutableArray具有不稳定性,它其中的车厢代号都是<NSObject>类型的
//删除车厢及其中值
array1.removeAtIndex(2) //删除某节车厢代号
array1 = [] //用一个空火车替代原先火车
array1.removeAll(keepCapacity: true) //删除所有车厢代号,true和false是否删除车厢
array1.capacity //数组车厢数,上面的true和false会影响这个值
附言:keepCapacity: true 之后array1.capacity为原长度,array1.count为0。这时候依然不能通过 array1[0] = 123 来车厢赋值(因为这些车厢没代号)。需要用array1.insert(19, atIndex: 0) 这样的语句来赋值。
//array中所有元素反转,最后一位变为第一位
var reversedArray = array1.reverse()
//其他
var array2 = [1, 2, 3, 4, 5] //声明并赋值一个数组
var array3:[Int] = [1, 2, 3, 4, 5] //声明并赋值一个数组
//这里面最主要的就是
array1[0] = 123 //作用是修改车厢代号,并不会创建车厢,所以不能用在空闲车厢上
如果不去考虑内存的话我们不需要关注array1.capacity的值得变化。这里重点写只是为了打基础
OC中有NSArry和NSMutableArry这两种概念。Swift中其实也有Array和NSMutableArray,但它并不推荐你使用NSMutableArray。我们主要谈Array.
我们把数组想象成一列火车。变量名就是车名,()代表实例化火车,capacity代表车厢数,数组中元素代表车厢代号。
Capacity是Swift中数组特有的一个属性,代表数组容量。也可以是作为这个数组所占的内存,当数组需要插入超过其容量的元素时,这个容量会*2,即这个容量其实是一些固定的值1,2,4,8,16,32…2^n(2的n次方)。容量增大,代表这个数组动态分配到的内存在增大。但既然是容量(内存),在array1+array2时,只会把数组中的元素送过去。即array的车厢代号个数(count)会影响array1.capacity,但array2.capacity不会对array1造成任何影响。
火车车厢数(capacity)>=车厢代号数(count)
空闲车厢数 = 火车车厢数(capacity)- 车厢代号数(count) //空闲车厢只会在火车尾部
Array实例化
//告诉大家有一列火车,车厢以数字代号,但是没车头的(不推荐)
var array1:[String]
var array1:Array<Int>
array1 = [] //上面方法创建的火车,因为没有自己的车头只能问人家借个头
array1 = [1,2] //头和车厢都借过来了
//告诉大家有列车厢以数字代号的火车,车头有了()即alloc init (强烈推荐)
var array1 = Array<Int>()
//判断是否为空数组
array1.isEmpty = ture //火车车厢是不是都没代号
array1.capacity = 0 //火车一个车厢都没有
array.count = 0 //火车一个车厢代号都没有
//增加车厢代号的方法,车厢一般你方法对是自增加的
array1 = [1, 2] //使array1等于[1,2]这个火车,这样array1不管有没有实例化都会被实例化
array1.insert(0, atIndex: 0) //在0这个位置插入一节代号为19的车厢,原先0位置车厢向后挪,整个数组长度+1,可供插入的最大位置为array.count
array1.append(3) //在火车末尾加上一节代号为3的车厢
array1 += [4] //效果等同于array1.append(4) 。类似nt自增长的写法
//追加数组
array2 = array1 + [5,6] //数组相加,类似int相加的写法
array1 += [7,8] //自增加
//修改车厢代号的方法
array1[0] = 123 //只能修改有代号的车厢,不能给无代号的车厢添加代号
附言:在NSMutableArray中这个方法可以给无代号的车厢代号,但是NSMutableArray具有不稳定性,它其中的车厢代号都是<NSObject>类型的
//删除车厢及其中值
array1.removeAtIndex(2) //删除某节车厢代号
array1 = [] //用一个空火车替代原先火车
array1.removeAll(keepCapacity: true) //删除所有车厢代号,true和false是否删除车厢
array1.capacity //数组车厢数,上面的true和false会影响这个值
附言:keepCapacity: true 之后array1.capacity为原长度,array1.count为0。这时候依然不能通过 array1[0] = 123 来车厢赋值(因为这些车厢没代号)。需要用array1.insert(19, atIndex: 0) 这样的语句来赋值。
//array中所有元素反转,最后一位变为第一位
var reversedArray = array1.reverse()
//其他
var array2 = [1, 2, 3, 4, 5] //声明并赋值一个数组
var array3:[Int] = [1, 2, 3, 4, 5] //声明并赋值一个数组
//这里面最主要的就是
array1[0] = 123 //作用是修改车厢代号,并不会创建车厢,所以不能用在空闲车厢上
如果不去考虑内存的话我们不需要关注array1.capacity的值得变化。这里重点写只是为了打基础
还没人赞这篇日记