使用 let 来声明常量,使用 var 来声明变量。一个常量的值,在编译的时候,并不需要有明确的值,但是你只能 为它赋值一次。也就是说你可以用常量来表示这样一个值:你只需要决定一次,但是需要使用很多次。
基本数据类型(声明和使用)
// 声明变量使用var
var a = 10;
a = 20;
print("it is a:\(a)");
// 使用var声明变量,不用明确地声明类型,声明的同时赋值的话,编译器会自动判断类型
// 指定类型
var aDouble : Double = 10.0
aDouble = 11.0
var aString : String = "haha"
aString = "nini"
// 注意的是:使用var声明变量,如果变量不会被第二次使用赋值,就会出现烦人的警告
// 会一直提示你使用let
// 声明常量使用let
let b = 10
print("\(b)");
// 注意的是:使用let声明常量,如果常量不被使用也会出现烦人的警告
// 一旦赋值就不能修改,否则直接报错
let cStr = "hello"
let ccStr = cStr + String(b)
print("\(ccStr)");
// 强转(类似Java的)
// 也可以使用\(变量)格式来拼接
let cccStr = cStr + " \(b)";
print(cccStr);
字符串
// 在OC中定义字符串用 @"". Swift中用""
// 注意点: OC中的字符串是NSString, Swift中的字符串是String
// OC中的字符串是一个对象, 继承于NSObjcte
// Swift中的字符串是一个结构体
// Swift中的字符串的性能比OC中的高
var str: String = "lnj "
// 拼接
var str2 = "cool"
str += str2
// 格式化
let num = 30
let name = "lnj"
// 目标: name = lnj , age = 30
// 在Swift中可以使用 \()来拼接其它值
var str3 = "name = \(name), age = \(num)"
// 09: 08: 13
// 注意: 所有的值都必须放到数组中, 哪怕只有一个值也需要放到数组中
var str4 = String(format: "%02d: %02d: %02d", arguments: [9, 8, 13])
// 截取
// 注意: 在Swift中, 如果需要截取字符串, 建议使用OC的字符串来截取, 因为Swift中String的字符串截取方法使用起来非常复杂和蛋疼
// Swift中的字符串可以和OC中的字符串非常非常方便的进行转换
var str5: NSString = "xmg nb"
var str6 = "xmg fc nb" as NSString
var subStr = str5.substringWithRange(NSMakeRange(1, 3))
// Swift中的字符串是支持直接遍历的
var str7 = "www.520it.com"
for c in str7.characters
{
print(c)
}
数组
/*
定义数组时如果使用let就代表是一个不可变数组
如果使用var就代表是一个可变数组
*/
// 和OC数组的区别就是去掉前面的@符号
let arr0 = ["ooo", "xxx"]
// Siwft中的数组可以存储任意类型
let arr2 = ["ooo", 123, 10.1]
// 声明空数组
let arr = []
print(arr)
// 声明数组[存放任何类型的数据]
var b : Bool
b = true
let arr1 = ["hello", 100, 9.0, b]
print(arr1)
// 声明一个存放特定类型的数组
var arrStr = [String]()
// 添加元素
arrStr.append("hello")
arrStr.append("swift")
arrStr.count // 元素总数
arrStr.indexOf("hello") // 元素的下标
/*
定义数组时如果使用let就代表是一个不可变数组
如果使用var就代表是一个可变数组
*/
// 和OC数组的区别就是去掉前面的@符号
let arr = ["lnj", "lmj"]
// Siwft中的数组可以存储任意类型
let arr2 = ["lnj", 123, 10.1]
// 初始化
// Swift中, 如果一个变量没有初始化是不能被使用的
var arr4: [String]
// alloc initWithXXX == (XXX:)
// alloc init == ()
arr4 = [String]()
arr4.append("lnj")
// 数组合并
var arr5 = ["lnj", "123"]
var arr6 = ["lmj"]
arr5 += arr6
// 注意点: 只有相同类型的数组才能进行合并
// Swift是强语言, 不同数据类型不能进行运算
var arr7 = ["zs", 123]
arr5 += arr7
字典
// 创建字典
// @{@"key": "value"};
// Swift中创建字典和创建数组一样, 用[]
// [String : NSObject] 类型是以后做iOS开发中最常见的一种格式
let dict = ["name": "lnj", "age": 30]
// 获取value
dict["name"]
// 遍历字典
for key in dict.keys
{
print(dict[key])
}
// 利用元祖类型遍历字典, 会自动将字典中的key赋值给元祖中的第一个变量, 将value赋值给元祖中的第二个变量
// 注意: 第一个是key, 第二个value
for (kk, vv) in dict
{
print(kk)
print(vv)
}
// 新增key / value
// 如果对应的key在字典中没有, 那么就会新增
var dict2 = ["name": "lnj", "age": 30]
dict2["gender"] = "man"
dict2
// 更新key / value
// 如果对应的key在字典中有, 那么就会更新
dict2["name"] = "zs"
dict2
// 删除
dict2.removeValueForKey("name")
dict2
// 合并字典
var dict3 = ["score": 99]
for (key, value) in dict3
{
dict2[key] = value
}
dict2