整型


  • 有符号的整型:能表示正数、零和负数
数据类型 名称 数据范围
Int 系统默认,相当于 OC 的 NSInteger 和平台相关
Int8 有符号 8 位整型 -128 ~ 127
Int16 有符号 16 位整型 -32768 ~ 32767
Int32 有符号 32 位整型 -2147483648 ~ 2147483647
Int64 有符号 64 位整型 -9223372036854775808 ~ 9223372036854775807
  • 无符号的整型:能表示正数和零,不能表示负数
数据类型 名称 数据范围
UInt 不常用,相当于 OC 的 NSUInteger 和平台相关
UInt8 无符号 8 位整型 0 ~ 255
UInt16 无符号 16 位整型 0 ~ 65535
UInt32 无符号 32 位整型 0 ~ 4294967295
UInt64 无符号 64 位整型 0 ~ 18446744073709551615
  • 整型字面量
  (1) 十进制数, 没有前缀;
  (2) 二进制数,  前缀是 0b;
  (3) 八进制数,   前缀是 0o;
  (4) 十六进制数,  前缀是 0x。
      let a = 17
      let b = 0b10001
      let c = 0o21
      let d = 0x11
      print(a, b, c, d)
  • 整型的选择
  (1)虽然有这么多的整数类型,但是 Swift 的官方文档推荐开发人员尽量使用 Int;

  (2)除非需要特定长度的整数,一般情况下不要使用 Int8Int16 等特定长度的整数,用 Int 就够了;提高代码一
     致性和可复用性;

  (3)尽量不要使用 UInt,即使要存储的值是整数,也尽量使用 Int 。
     好处:* 提高代码的可复用性
          ** 避免不同类型数字之间的转换
          *** 有利于数据类型的自动推断

浮点型


  • Float:表示 32 位浮点数,当精度要求不高时可使用该类型。
  • Double:表示 64 位浮点数,是系统默认类型,存储精度很高
  • 浮点型字面量:有十进制十六进制两种形式,小数点两边必须至少有一个数字。
Swift 中:
  (1) 可以给整型和浮点型添加 0 用于分割数值;
  (2) 可以给整型和浮点型添加 下划线(_) 用于分割数值。
      好处:* 提高数值的可读性
           ** 并不影响实际值

      var a = 003.1415
      let b = 3_500_000

布尔类型


  • 作用:用于表示逻辑上的或者
  • 取值:只能为 true 或者 false
  let hasError = false
  if hasError {
    print("程序出错啦")
  } else {
    print("程序正常运行")
  }

元组类型


  • 定义:把多个值组合成一个复合值;元组内的值可以是任意类型,每个值的类型也可以不同

  • 应用场景:作为函数的返回值,可以传递多个值。

  • 声明和定义

  (1) let 常量名 = (元素值1, 元素值2, 元素值3, ......, 元素值n)
      let student = ("张三", 18, "男")

  (2) let 常量名 = (元素名称1 : 元素值1, 元素名称2 : 元素值2, ......, 元素名称n : 元素值n)    
      let student = (name : "张三", age : 18, gender : "男")

  (3) let (name, age, gender) = ("张三", 18, "男")

  (4) let (name, _, _) = ("张三", 18, "男")
  • 变量访问
  (1)通过元素的下标访问
     let student = ("张三", 18, "男")
     print("姓名:\(student.0), 年龄:\(student.1), 性别:\(student.2)")

  (2)通过元素的名称访问
     let student = (name : "张三", age : 18, gender : "男")
     print("姓名:\(student.name), 年龄:\(student.age), 性别:\(student.gender)")

  (3)通过元素的常量或者变量名访问
     let(name, age, gender) = ("张三", 18, "男")
     print("姓名:\(name), 年龄:\(age), 性别:\(gender)")
  • 比较:使用 == 操作符只能对最多含有 6 个元素的元组进行比较
  let xiaoMing1 = (first : "xiaoMing", last : 19)

  let xiaoMing2 = (name : "xiaoMing", age : 19)

  let isEqualt = (xiaoMing1 == xiaoMing2)

  print(isEqualt)

可选类型


  • nil:只有可选类型可以赋值为 nil
OC 中:nil 表示一个空指针,只能用于对象;

  在 Swift 中:
  (1) 指针被映射为泛型类型,nil 的含义是一个值,表示值的缺失;
  (2) nil 可用于任何类型的可选项,不仅限于对象。
  • 可选类型的声明
  1. 可选常量 
  // 声明常量,同时赋值,则它的值就是实际值
  let 常量名: 常量类型? = 常量值
  let a: Int? = 20 
  print(a as Any)

  // 声明常量,没有同时赋值
  let 常量名: 常量类型?
  let a: Int?
  a = nil
  print(a as Any)

   可选常量没有默认值,在使用之前必须设置初值,否则会报错

  2. 可选变量
  // 声明变量,同时赋值,则它的值就是实际值
  let 变量名: 变量类型? = 变量值
  var y: Int? = 10
  print(y as Any)

  // 声明变量,没有同时赋值
  var 变量名: 变量类型?
  var y: Int?
  y = nil
  print(y as Any)  

   如果不给可选变量赋值,则它的值默认为 nil
  • 解包
  (1) 确定可选类型包含一个非 nil 的值,然后强制解包
      let y: Int? = 10
      print(y! + 20)

  (2) 使用 if 语句提前对它进行判断
      let convertedNumber: String? = "demo"
      if convertedNumber != nil {
         print("convertedNumber has an integer value of \(convertedNumber!).")
      }

  (3) 可选绑定:判断可选类型是否包含值,如果包含就把值赋给一个临时常量或者变量
      let possibleNumber = "123"
      if let actualNumber = Int(possibleNumber) {
         print("\"\(possibleNumber)\" has an integer value of \(actualNumber).")
      } else {
        print("\"\(possibleNumber)\" could not be converted to an integer") 
      }

  (4) 隐式解析可选类型
      let possibleStrin: String? = "An optional string."
      // 需要感叹号来获取值
      let forcedString: String = possibleString!

      let assumedString: String! = "An implicitly unwrapped optional string."
      // 不需要感叹号
      let implicitString: String = assumedString

       应用场景:当可选类型被第一次赋值之后就可以确定以后一直有值的时候,隐式解析可选类型非常有用;主要被
        用在 Swift 中类的构造过程中。

      本质:隐式解析可选类型本质上是一个可选类型
      1. 可以把隐式解析可选类型当做普通可选类型来判断它是否包含值
         let assumedString: String! = "An implicitly unwrapped optional string."
         if assumedString != nil {
             print(assumedString)
         }

      2. 可以在可选绑定中使用隐式解析可选类型来检查并解析它的值
         let assumedString: String! = "An implicitly unwrapped optional."
         if let definiteString = assumedString {
             print(definiteString)
         }

results matching ""

    No results matching ""