《swift 从入门到精通 》~ 基础篇(数据类型)

 联系人:石虎 QQ:1224614774  昵称: 嗡嘛呢叭咪哄

                      QQ群:807236138  群称: iOS 技术交流学习群

                      QQ群:713799633   群称:iOS技术交流学习群-2

参考:

《swift 从入门到精通 》~ 基础篇(运算符、字符串)https://blog.csdn.net/shihuboke/article/details/110203341

《swift 从入门到精通 》~ 基础篇(集合)https://blog.csdn.net/shihuboke/article/details/110672581

一、数据类型 

数据类型包括常量、变量、表达式

常量:就是在程序运行过程中值不会发生改变的量 ,用关键字 let 声明   let name = “puxin”

变量: 就是在程序运行过程中值可以发生改变的量,用关键字 var 声明  var age = 12

表达式 定义: let index  = % 2

类型标注

可以在一行中声明多个变量或常量,用逗号分隔

常量和变量的名字不能包含空白字符、数学符号、箭头、保留的(或者无效的) Unicode 码位、连线和制表符。也不能以数字开头,尽管数字几乎可以使用在名字 其他的任何地方

驼峰拼写发 : 首字母小写,其他单词的首字母大写

类型声明 : swift 4 新提出的,加上类型声明是告诉编译器该常量和变量中存储的值得类型,同时还要进行初始化,即给该常量和变量赋初值

定义 : let name: String = “”

  var age: Int = 1

打印输出函数 print()

向代马中添加注释:

注释是代码的一个重要的组成部分,可以提高大幅度提升代码的可读性,一般高质量的代码中大约有三分之一的篇幅为注释

         格式: //    /**  */     ///

语句分隔符:

写完一行后,不用加分号,如果是一行中输入多条语句时,可以使用逗号作为一条语句的分隔符

        例子: var a_b = “a and b” , aperson = “one person”

整型和浮点型

数字有二种主要类型即是整型和浮点型

          整型分有符号类型 和无符号类型

         有符号类型 : Int8 Int16 Int32 Int64

         无符号类型: UInt8 UInt16 UInt32 UInt64

越界赋值:

给不同类型的整数赋值时注意取值范围,不能越界赋值 .

 通过整型的 min 和max 属性获取不同整型的最小值和最大值

     print("Int8.max = \(Int8.min) Int16.min = \(Int16.min) Int32.min =  \(Int32.min) \(Int64.min) INT8_MIN = \(INT8_MIN)")

     print("Int8.max = \(Int8.max)  Int16.max = \(Int16.max)  Int32.max = \(Int32.max) Int64.max = \(Int64.max) INT8_MAX = \(INT8_MAX)")

打印结果:

      Int8.max = -128 Int16.min = -32768 Int32.min =  -2147483648 Int64.min = -9223372036854775808 INT8_MIN = -128

      Int8.max = 127  Int16.max = 32767  Int32.max = 2147483647 Int64.max = 9223372036854775807 INT8_MAX = 127

浮点型混合运算

浮点型 swift 提供二种,对精准不高的使用的浮点型 float 和双精度浮点型类型 double

布尔值

布尔值只有二个值”真”和”假” 分别用关键字 true 和 false 表示.

例子:  var daylight: Bool = true

与布尔型相关的逻辑运算符,也叫布尔运算符

元组型

元祖型定义:

元祖型是有一个或者多个数据类型组成的复合类型,其中每一个数据类型可以是任何类型,并不要求是相同的

例子: let http404Error = (404, “Not Found”)

使用场景: 表示矩形长宽、三维坐标、等

读取元组

读取有三种方法:

第一种:将元组的值赋值给另一个元组

   例子:

       let http404Error = (404, "Not Found")

        let (code, description) = http404Error

        print("code=== \(code)")   //  code=== 404

        print(description) // Not Found
第二种:通过下标访问元组的特定元素,下标是从 0 开始分别自左向右表示不同的元素

   例子:

             print(http404Error.0)   //  404

             print(http404Error.1)   //  Not Found
第三种:在定义元组的时候给每一个元素命名,通过这些元素的名字获取元素的值

   例子:

       let http404Error = (code: 404, description: "Not Found")

       print(http404Error.code)             //  404

       print(http404Error.description)  //  Not Found

补充:

      优点 — 可作为函数的返回值使用,大大增加返回值的可读性,

      弊端 — 元组不适合用来创建复杂的数据结构,特别是长期使用的数据类型,这种情况应该使用结构体或者类描述数据结构

可选型

1 .Swift 有一个特殊的数据类型,通常称为可选型 optional, 可选型是 swift 内建安全特性的一个重要的体现

2 .可选型用来表示一个变量或者常量可能有值,也可能无值,用 nil 表示空 ,注意(整数 0 不是 nil, 空字符串””也不是 nil )

3 .nil 可以理解为变量或者常量对应的存储空间里没有数据

例好处区别子:

     用字符串描述:

        var studentInObjc: (name : String, idNUmber: String, age: Int, reward: String)

        studentInObjc = ("Tom", "13261089216", 20, "")

        // 描述中的reward 没有用可选类型,赋值中的""虽然是空字符串也是一个取值,如果有文档规定空字符表示特定的情况,否则其他程序员很难理解这个代码

   用字符串可选型描述

  var studentInSwift: (name : String, idNUmber: String, age: Int, reward: String?)

   studentInSwift = ("Tom", "13261089216", 20, nil)

// 描述中的reward 用可选类型String?,有值为字符串,无值就显示 nil

定义可选型 :

  声明一个可选类型的常量或者变量的格式

  let  cName :Type? = value

  var cName :Type? = value
声明一个变量reward 其是字符串可选类型,可以赋值,也可以不赋值,默认为 nil

var reward: String?

理解可选型 :

可以将可选类型想象一个盒子,可选型可以表示一个实际的值,也可以表示 nil,这个盒子可以装一个实际的值,也可以空着,但是无论装不装实际的值,盒子总是存在的

打开这个可选型的盒子,驱虎其中的数据,有三种方式: 强制拆包、可选类型绑定 、nil 聚合运算

第一种方式 — 强制拆包 :   用 !   强制拆包

例子:

var reward: String?

reward = “wo shi lao shi ”



var bonus: String = “value”

bonus = reward!

print(“\(bonus)”)



注意: 强制拆包带来的问题会导致系统崩溃,被解包属性必须有数据才可以,

                   防止崩溃 应该这样   

if reward != nil {

bonus = reward!

}

第二种方式 — 可选类型绑定 :

可选型绑定就是在 if 或者 while 的条件判断语句中,把可选类型赋给你一个常量,如果可选类型含有值,则这条赋值语句的布尔值为 true,同时该常量取得可选型中含有的值,如果可选型等于 nil ,则这条赋值语句的布尔值为 false.

格式如下:

        var optionalName: String?

        optionalName = "可选类型绑定"

        if let constantName = optionalName {

            print("可选类型绑定 == \(constantName)")

        } else {

            print("可选类型绑定 == kong")

        }

第三种方式 — nil 聚合运算 : 用?? 为 nil 聚合运算符

从可选型中取值的方法叫作 nil 聚合运算.就是一种最简便的可选型拆包方式,

无论可选型中是否有值,都可以通过 nil 聚合运算拆包.

如果有值就取出来,如果可选型为 nil,就使用默认值代替.

格式如下:

    var hobby: String?

    var membership: String?


//        membership = "membership"

        let getHobby = hobby ?? "No hobby"

        let getMembership = membership ?? "No membership"

        
        hobby = nil

        membership = nil

        
        print("nil 聚合运算 =getHobby == \(getHobby)")

        print("nil 聚合运算=getMembership == \(getMembership)")


打印结果:

        nil 聚合运算 =getHobby == No hobby
        nil 聚合运算=getMembership == No membership

使用 nil 聚合运算符注意点:

1.默认值的类型必须和可选型拆包后的类型一致,

2.进行 nil 聚合运算符的对象必须为可选型

 

二、运算符

           请查看下一篇文字...

谢谢!!!

本账号主要分享我成长过程中的各种心得感悟,包括技术总结, iOS、Swift 和 Mac 相关技术文章、工具资源、参与技术讨论,整理开发技巧、让学习成为一种享受!

猜你喜欢

转载自blog.csdn.net/shihuboke/article/details/109553998