JHHK

欢迎来到我的个人网站
行者常至 为者常成

1、基础语法

目录

常量

常量 只能赋值一次 它的值不要求在编译时期确定,但在使用之前必须赋值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)
}

行者常至,为者常成!





R
Valine - A simple comment system based on Leancloud.