基本类型
var str = "Hello, playground"
// 变量声明规则
// var (let) 变量名 = 值
var str1 = "abc"
str1 = "bcd"
// 类型推断(根据给出的值对变量进行类型的推断和确定)
//str1 = 2 // 会报错
//*****************基本数据类型
var a = 10 // 被推断为整型, 可以省略分号(也可以写分号)
var b = 20
// 关于整型的类型推断, 在32位系统的环境下会自动推断为Int32, 在64位环境Int64
//**********************
let maxNumber = 57
//maxNumber++ // 报错, let 类型是不可变的变量
// 指定变量类型
// 语法: (var 变量: 变量类型 = 值)
// 如果给定类型, 在使用变量前进行赋值
var currentStudent: Int
currentStudent = 50
currentStudent++
// 浮点数会被推断为Double类型(双精度)
var score = 90.2
// 需要使用Float类型
var score1: Float = 90.5
// var sumScore = score + score1 // 报错, 原因, swift中不支持隐式类型转换, 充分体现swift的安全性, 消除潜在威胁
// var必须转成同类型才可操作
// 类型转换 语法: 类型(变量)
var sumScore = score + Double(score1)
// 运算符 和变量 必须加空格
var sumScore2 = Float(score) + score1
//***************字符串
// 字符串自动推断类型为 String
let name = "小雷雷"
// 字符型 (用Character 转成字符型)
// char 变量名
let char:Character = "a"
// + 号运算符
let loClass = "BJS150727"
// 拼接字符串, 直接用加号
let teaInfo = loClass + name
// + 又名重载运算符, 源于C++ , 可以直接用于字符串的拼接
// 字符串截取
// 1. 截取
// String 类型与NSString类型不同
var strTest = "0123456789"
// String.Index
// 取出字符串开始的下标(Int类型)
var index = strTest.startIndex // 是Int类型, 0
// 取出字符串结束的下标(Int类型)
var index_endIndex = strTest.endIndex // 10
// predecessor() 代表前一个位置, 10前面的下标是9 就打印9
var index_p1 = index_endIndex.predecessor() // 9
// 取到后一个位置, 0后面的下标是1 打印1
var index_s1 = index.successor() // 1
// 然后再截取, 截取到下标到1得位置(不包括1)
var subString = strTest.substringToIndex(index_s1) // "0"
var sunString2 = strTest.substringFromIndex(index_s1) // "123456789"
// 2. 截取
// 将String转成NSString类型
// 使用as关键字指定目标类型
var nsstring1 = (strTest as NSString).substringFromIndex(5)//"56789"
var nsstring2 = (strTest as NSString).substringToIndex(4)//"0123"
// 3. 截取
var strTest2 = "01234567"
// 取第几个位置 4
// advancedBy 返回是Self
let index_str2 = strTest2.startIndex.advancedBy(4)
// 截取 先搞 第几个
var subStrTest2 = strTest2.substringToIndex(index_str2)//"0123"
// 在swift中, 变量几乎支持所有的Unicode编码的字符, 除了数学中的符号, 下划线,特殊字符
var cat = "
数组&字典
//****************数组
// 数组最好存储同一类型的元素
var array = [1, 2, 3] // 自动推断为[Int]类型的数组, [1, 2, 3]
var array2 = ["1", "2", "3"] // [String] , ["1", "2", "3"]
// 数组指定类型 (两种方式)
//第1种方式. 语法:[Int]
var array4:[Int] = [1, 2, 3]
//第2种方式. 语法 Array<Int>
var array5: Array<String> = ["1", "2"]
var array6:Array = [1, "2"] // 不建议使用这个方法(有点麻烦)
// 增加元素
array.append(4) // [1, 2, 3, 4]
// 插入 (在下标为2的位置插入元素 5)
array.insert(5, atIndex: 2)
// 获取最后一个元素
array.last
// 获取第一个元素
array.first
// 删除下标是第一个的元素
let c = array.removeAtIndex(1)
// 删除全部元素
//array.removeAll()
c
array
// 更改
array[0] = 9 // 把第0个元素改为 9
array//[9, 5, 3, 4]
// 查询
let d = array[1]
d
// 数组中重载运算符的使用 +
array = array + array4 // 把一个数组放到另一个数组里
array // [9, 5, 3, 4, 1, 2, 3]
array4
// 区域运算符
// ... 1...2 从1到2的闭区间 (包括1和2)
// ..< 1..<2 从1到2的开区间(不包括2)
array // [9, 5, 3, 4, 1, 2, 3]
array[0...2] // [9, 5, 3]
array[0..<2] // [9, 5]
// 区间替换, 数组中元素个数没有限制
array[0...2] = [11, 22 ,33]
array
//*********************字典
// 键值对数组, 字典的使用规则, 键与键类型相同, 值与值类型相同, 键值类型可以不同
var dictionary = [1:"1", 2:"2", 3:"3"]
// 声明字典类型(指定类型)
// 第1中方式. [key:value]
var dictionary1 : [Int: String] = [1:"1"]
// 第2种方式. Dictionary<key, value>
var dictionary2: Dictionary<Int, String> = [1:"1"]
// 查询
// 根据key查询, 如果有就替换, 没有就插入
let eeeee = dictionary[1]
// 把key 为 3的 值换成 "a"
dictionary[3] = "a"
// 没有4 就插入这个键值对
dictionary[4] = "ww"
dictionary
print(dictionary)
// 根据key取值, 进行赋值操作时, 如果key存在则执.果key不存在执行插入操作
// 键值对的找位置
// indexForKey 这个函数的返回值类型是可选类型, 下面使用的hua需要拆包
var index_dic = dictionary.indexForKey(1)
// 根据indeinde找到位置再删除
dictionary.removeAtIndex(index_dic!)
dictionary