目录
常量
常量 只能赋值一次 它的值不要求在编译时期确定,但在使用之前必须赋值1次
一、只能赋值1次 下面两种方法都可以
//方法一:
let age1 = 10
//方法二:
let age2:Int
age2 = 10
//会报错 Cannot assign to value: 'age1' is a 'let' constant
//age2 = 20
二、在使用之前必须赋值一次
let age2:Int
//不赋值使用会报错 Constant 'age2' used before being initialized
//print(age2)
三、声明时不初始化 应该指定类型
//let age3
let age3:Int
//如果声明时 没有指定类型 直接赋值会报错
age3 = 30
四、不要求在编译时期确定
func getAge()->Int{return 40}
let age4 = getAge()
print(age4)
常见数据类型
值类型:
Bool,Int, Float, Double
Character, String
Array, Dictionary, Set
枚举
结构体
引用类型
class
一、布尔类型
let b1:Bool = true;
print(b1);
二、整型
//整数型 Int Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64
let num1 = 10//十进制
let num2 = 0o10//八进制
let num3 = 0x10//十六进制
print(num1,num2,num3)
//取值范围
//int类型 32bit平台 等价于Int32 64bit平台等价于 Int64
let int:Int = 10
print(int)
print("Int取值范围为:",Int.min,"~",Int.max,"\n")
let int8:Int8 = 20
print(int8)
print("Int8取值范围为:",Int8.min,"~",Int8.max,"\n")
let uint8:UInt8 = 30
print(uint8)
print("UInt8取值范围为:",UInt8.min,"~",UInt8.max,"\n");
let sh:CShort = 30;
print(sh);
print("CShort取值范围为:",CShort.min,"~",CShort.max,"\n");
let long:CLong = 30;
print(long);
print("CLong取值范围为:",CLong.min,"~",CLong.max,"\n");
三、浮点类型
//不同的浮点
let float:Float = 10.0 //32位 精度6位
let double:Double = 20.0 //64位 精度15位
let longdou:CLongDouble = 10.0 //80位
print(float,double,longdou)
//浮点显示小数点位数
let fl:Float = 10.0;
let flformatter = NSString(format: "%.2f",fl);
print("flformatter = ",flformatter);
//科学计数法表示
let num1 = 1.25
let num2 = 1.25e2
let num3 = 1.25e-2
let num4 = 0xfp2//相当于十进制的 15*2^2
let num5 = 0xfp-2//相当于十进制的 15*2^-2
print(num1,num2,num3,num4,num5)
四、字面量
print("\n----------------字面量---------------------")
//字符串 使用 ""
let str:String = "Hello World!"
print(str)
//字符类型 使用""必须制定类型 ""默认是字符串类型
let cha:Character = "a"
print(cha)
字符串
//1、字符串的拼接
var str1 = "hello"
str1 += " world"
print(str1)
//2、字符串的前后缀获取
let str = "hello world!"
let subStr = str.prefix(5)
print(subStr)//hello
let subStr2 = str.suffix(6)
print(subStr2)//world!
//3、字符串子串获取
let str = "hello world!"
//index不是传统的数字,注意用法
let startIdx = str.index(str.startIndex, offsetBy: 1)
//str.endIndex指向的位置不是叹号所在的位置,而是叹号后一个位置
let endIdx = str.index(str.endIndex, offsetBy: -1)
//使用区间符获取子字符串
let subStr = str[startIdx..<endIdx]
print(subStr)// ello world
//4、字符串的删除
var str = "hello world"
str.remove(at: str.index(str.startIndex, offsetBy: 5))
print(str)//helloworld
var str = "hello world"
str.removeSubrange(str.index(str.startIndex, offsetBy: 0)...str.index(str.startIndex, offsetBy: 5))
print(str)//world
五、数组
print("\n----------------数组---------------------");
do{
let arr:Array = [1,3,5,7]
print(arr)
let arr2:Array = [arr,arr]
print(arr2);
}
数组的增删改查
var list = [1, 2, 3]
list.append(4)
print(list)// [1, 2, 3, 4]
list.removeLast()
// list.removeLast(2)
print(list)//[1, 2, 3]
list.removeFirst()
// list.removeFirst(2)
print(list)//[2, 3]
list.insert(1, at: 0)
print(list)//[1, 2, 3]
list += [4, 5]
print(list)//[1, 2, 3, 4, 5]
六、字典
print("\n----------------字典---------------------");
do{
let dic:Dictionary = ["age":18,"weight":56.9]
print(dic)
let dic2:Dictionary = [1:"first",2:"second"];
print(dic2)
//字典取出的是可选项
var dic = ["name":"xiaoming","age":18] as [String : Any]
let name = dic["name"]//Optional("xiaoming")
}
七、集合
print("\n----------------集合---------------------");
do{
let set:Set = ["age","weight"]
print(set)
}
类型转换
func dataTypeSwich() -> Void {
//1、整数转换
print("\n---------------------整数转换---------------------")
do{
let int1:UInt8 = 1
let int2:UInt16 = 2_000
//let int3 = int1 + int2//直接相加会报错 需要类型转换
let int3 = UInt16(int1) + int2//占用内存较小的类型转为占用内存较大的类型
print(int3)
}
//2、整数、浮点数转换
print("\n---------------------整数浮点转换---------------------")
do{
let int4 = 4
let double1 = 0.123
let pi = Double(int4)+double1
let intPi = Int(pi)
print(intPi)
}
//3、字面量可以直接相加,因为数字字面量本身没有明确的类型
print("\n---------------------字面量---------------------")
do{
let result = 3+0.12234
print(result)
}
}
元祖分析
func tupleAnaly() -> Void {
//1、元组初始化及访问1
let http404Error = (404,"Not Found")
print("The status code is \(http404Error.0)\(http404Error.1)")
//2、元组初始化及访问2
let http200Status = (statusCode:200,statusMessage:"OK")
print(http200Status.statusCode)
print(http200Status.statusMessage)
//3、赋值给常量
let (statusCode,statusError) = http404Error
print(statusCode)
print(statusError)
//4、赋值时忽略其中一个
let (justStatusCode,_) = http404Error
print(justStatusCode)
}
行者常至,为者常成!