• Swift -- 2.基本数据类型


    变量和常量的声明

    声明时使用var

    声明时必须显式或隐式的制定变量类型

    Swift的整数数值有4种表示方式:

    十进制

    二进制:以0b开头

    八进制:以0o开头

    十六进制:以0x开头

    Swift的浮点数有3种表示形式:

    十进制形式:5.12

    科学记数形式:5.12e2(5.12x10^2)

    十六进制数形式:这种形式的浮点数必须以0x开头,且需要使用p代表指数部分,其中p代表乘以2的p次方 0x5.a2p2 = 0X5.a2*2^2

    数值之间的类型转换

    Swift编译器对类型检查非常严格

    整数之间的转换必须是显式转换,浮点型和整型之间的转换也必须是显式转换

    例:将Int8类型的值转换成Int16类型的值

    var a : Int8 = 6;

    vat b : Inte16 = Int16(a);

    如果不使用显式类型转换编译会不通过,类型转换不合理在运行时会出错 

    布尔型

    在Swift语言中,Bool类型的数值只能是true或false,不能用0或者非0来代替,其他数据类型的值也不能转换成Bool类型

    元组(tuple)类型

    使用圆括号把多个值组合成一个复合值

    一个元组内的值可以使用任意类型

    一个元组内的的成员也可以是个元组

    元组是一种实用的数据类型,Swift函数支持多个返回值,这里的返回值是以元组的形式返回的

    定义一个元组:

    var health = (123,12,“test”)   //直接赋值,swift会推断元素类型

    var score : (Int , Int , String , Double)  //指定变量类型来定义

    var test = (123, (123,123))  //元组中可以嵌套元组元素

    var health1 = (height:182 , weight:66 ,status:"good")  //给元素命名,并直接赋值

    var score1 : (height:Int ,weight:Int ,status:String)  //给元素命名,指定元素类型

    给元组赋值:

    score = (1,2,“test”,2.4)

    给一个元组赋值的时候必须给所有成员都指定值

    如果给元组中元素指定名字,元组中的元素的位置就可以随意调换

    health1 = (weight:55 , height:99, status:"good")

    获取元组中的元素值

    1 使用 . 加索引来获取

    获取health元组的第一个元素   health.0

    获取test元组的第二个元素中元组的第一个元素 test.1.0

    2 声明常量或变量来获取

    var (height, weight, status) = health

    print("(height)(weight)(status)")

    获取部分变量,不需要的用下划线代替

    var (height, weight ,_) = health

    3 如果给元素指定了名字,可以使用变量名来获取元素

    health1.height

    可选类型

    c和oc中都没有这个类型,是Swift自己的特性

    在类型后面加个问号就是可选类型,比如Int?,String? 都是可选类型

    当值缺失时,可选类型会被置为nil

    var str = "ss11"

    var num : Int = Int(str) //这句是错误的,因为String转为Int类型有可能会失败,所以需要可选类型 var num : Int? = Int(str)

    var num = Int(str) //这句是正确的,Swift自动判断num为Int?类型

    将字符串转换为Int类型还有一种方式

    var num = (str as NSString).IntValue

    系统会自动将num判断为Ins32类型的数据,当str为ss11时,num为11,当str为11ss时,num为0,当str为ssss时,num为0

    所以说,IntValue这种形式不太安全

    在oc中,nil代表空指针,在Swift中,nil代表“值缺失”,任何可选类型的变量都可以被赋值为nil

    String?是可选类型,不能直接赋值给String类型,需要进行强制解析:在可选类型后面加叹号

    var str :String? = "fff"

    var str1 = str!

    使用强制解析必须是在可选类型值不为nil的情况下来进行的,所以在进行强制解析之前需要先判断可选类型是否真的有值

    在使用if语句的时候,也可以使用可选绑定

    var str4 : String? = "ccc"

    if var str5 = str4{

          print("(str5)") //在str4有值的时候,就可以绑定成功,否则失败

    }

    在自己创建的类型后面加!同样可以成为可选类型,在赋值的时候不需要再加叹号,系统会自行隐式解析

    类型别名

    给一个已有的类型定义一个可读性更强的名字

    typealias Counter = Int16

    var int5, int6 : Counter

    字符和字符串类型

    字符类型:

    1 单个字符 var s : Charecter = "sss"

    2 转义字符 var s : Charecter = " "

    3 u{n}的Unicode形式  var s : Charecter = "u{22}"

    字符串类型:

    定义字符串变量:var name : String = "marry"

    String的本质是结构体,所以也可以这样定义

    var str8 = String() //声明一个空字符串,可以使用isEmpty 属性来判断字符串是否为空

    var str9 = String(count: 1, repeatedValue: Character("f")) //声明一个具有多个重复字符的字符串

    Swift的String类型可以与Foundation框架的NSString类型无缝桥接

    在oc中,字符串是一个类,当给一个类的属性赋值时,传递的是字符串对象的指针,并不会赋值字符串对象的副本

    在Swift中,字符串是一个结构体,当进行赋值时,总是会复制一个副本,传递的是原字符串实例的副本

    使用+拼接字符串

    var info = "sss" + "fff"

    oc中NSString是不可变字符串,NSMutableString是可变字符串

    Swift中只有String,let声明的是不可变的,var声明的是可变的

    获取字符串长度

    var str2 : String = "ddd"

    let length = str2.characters.count

    字符串比较

    1 字符相等  直接用==运算符来判断

    2 前缀相等

    3 后缀相等

    获取字符串中字符的Unicode编码

    let cn = "chine,ff"

    for codeunite in cn.utf8

    {

        print("(codeunite)")

    }

    for codeunite in cn.utf16

    {

        print("(codeunite)")

    }

    for codeunite in cn.unicodeScalars

    {

        print("(codeunite.value)")

    }

    所有的值类型在赋值的时候都会进行拷贝,

    值类型包括:数字,字符串,数组,字典,结构体

  • 相关阅读:
    (OK) MIMP
    (OK) MIMP
    (OK) MIMP
    Linux内核报文收发-L3
    【Linux4.1.12源码分析】邻居子系统实现分析
    (OK) MIMP
    (OK) MIMP
    (OK) MIMP
    (OK) MIMP
    (OK) MIMP
  • 原文地址:https://www.cnblogs.com/chebaodaren/p/5407533.html
Copyright © 2020-2023  润新知