• 李洪强iOS开发Swift篇—03_字符串和数据类型


    李洪强iOS开发Swift篇—03_字符串和数据类型

    一、字符串

    字符串是String类型的数据,用双引号""包住文字内容  let website = "http://www.wendingding.com"

    1.字符串的常见操作

    (1)用加号 + 做字符串拼接

    let scheme = "http://"

    let path = “www.wendingding.com”

    let website = scheme + path

    // website的内容是”http://www.wendingding.com”

    (2)用反斜线 和 小括号 () 做字符串插值(把常量变量插入到字符串中)

    let hand = 2

    var age = 20

    let str = "我今年(age)岁了,有(hand)只手"

    // str的内容是"我今年20岁了,有2只手"

    注意:swift是类型安全语言,不同的数据类型是不能相加的。(需要强制转换类型)

    2.打印输出

    Swift提供了2个打印输出函数

    println :输出内容后会自动换行

    print :对比println,少了个自动换行的功能

    二、数据类型

    1.Swift中常用的数据类型有

    Int、Float、Double、Bool、Character、String

    Array、Dictionary、元组类型(Tuple)、可选类型(Optional)

    注意:数据类型的首字母都是大写的

    2.指定变量常量的数据类型

      在常量变量名后面加上 冒号(:) 和 类型名称

    let age: Int = 10

    上面代码表示:定义了一个Int类型的常量age,初始值是10

    提示:一般来说,没有必要明确指定变量常量的类型。如果在声明常量变量时赋了初始值,Swift可以自动推断出这个常量变量的类型

    如:let age = 20  Swift会推断出age是Int类型,因为20是个整数

    三、变量的初始化

    Swift严格要求变量在使用之前必须进行初始化

    注意:下面的代码是错误的

    var a: Int

    let c = a + 10 

    说明:

    第1行代码中:Swift并不会为变量a赋初值,a没有初始化

    第2行代码会报错

    下面的代码是正确的

    var a: Int = 20

    let c = a + 10

    四、整数

    1.整数的分类

    整数分为2种类型

    有符号(signed):正、负、零

    无符号(unsigned):正、零

    Swift提供了8、16、32、64位的有符号和无符号整数,比如

    UInt8 :8位无符号整型

    Int32 :32位有符号整型

    Int8、Int16、Int32、Int64、UInt8、UInt16、UInt32、UInt64

    2.最值

    可以通过min和max属性来获取某个类型的最小值和最大值

    let minValue = UInt8.min   // UInt8 类型的 min 等于0

    let maxValue = UInt8.max  // UInt8 类型的 max 等于255

    3.Int和UInt

    Swift还提供了特殊的有符号整数类型Int和无符号整数类型UInt

    说明:IntUInt的长度和当前系统平台一样

    在32位系统平台上,Int和UInt的长度是32位

    在64位系统平台上,Int和UInt的长度是64位

    Int在32位系统平台的取值范围:-2147483648 ~ 2147483647

    建议

    在定义变量时,别总是在考虑有无符号、数据长度的问题

    尽量使用Int,这样可以保证代码的简洁、可复用性

    4.存储范围

    每种数据类型都有各自的存储范围,比如

    Int8的存储范围是:–128 ~ 127

    UInt8的存储范围是:0 ~ 255

    如果数值超过了存储范围,编译器会直接报错

    注意:下面的语句都会直接报错

    let num1: UInt8 = -1

    let num2: Int8 = Int8.max + 1

    说明:

    第1行代码报错原因: UInt8不能存储负数

    第2行代码报错原因: Int8能存储的最大值是Int8.max

    5.整数的表示形式

    整数的4种表示形式

    (1)十进制数:没有前缀

      let i1 = 10 // 10

    (2)二进制数:以0b为前缀

      let i2 = 0b1010 // 10

    (3)八进制数:以0o为前缀

      let i3 = 0o12 // 10

    (4)十六进制数:以0x为前缀

      let i4 = 0xA // 10

    五、浮点数

    1.浮点数说明

    浮点数,就是小数。Swift提供了两种浮点数类型

    Double :64位浮点数,当浮点值非常大或需要非常精确时使用此类型

    Float :32位浮点数,当浮点值不需要使用Double的时候使用此类型

    精确程度

    Double :至少15位小数

    Float :至少6位小数

    注意:如果没有明确说明类型,浮点数默认就是Double类型

    let num = 0.14 // num是Double类型的常量

    2.浮点数的表示形式

    浮点数可以用 十进制 和 十六进制 2种进制来表示

    (1)十进制(没有前缀)

    1)没有指数:let d1 = 12.5

    2)有指数    :let d2 = 0.125e2  

    // 0.125e2 == 0.125 * 10²

    MeN ==  M * 10的N次方

    (2)十六进制(以0x为前缀,且一定要有指数)

    let d3 = 0xC.8p0 

    // 0xC.8p0 == 0xC.8 * 2º == 12.5 * 1

    0xMpN == 0xM * 2的N次方

    let d3 = 0xC.8p1 

    // 0xC.8p1 == 0xC.8 * 2¹ == 12.5 * 2  == 25.0

    3.数字格式

    数字可以增加额外的格式,使它们更容易阅读

    (1)可以增加额外的零 0

    let money = 001999 // 1999

    let money2 = 001999.000 // 1999.0

    (2)可以增加额外的下划线 _ ,以增强可读性

    let oneMillion1 = 1_000_000 // 1000000

    let oneMillion2 = 100_0000 // 1000000

    let overOneMillion = 1_000_000.000_001 // 1000000.000001 

    说明:增加了额外的零  0和下划线 _ ,并不会影响原来的数值大小

    六、类型转换

    两个类型不相同的数值,是不能直接进行运算的

    示例1:

    注意:下面的语句是错误的

    let num1: UInt8 = 10;    

    let num2: Int = 20;

    let sum: Int = num1 + num2 

    第3行会报错说明:

    报错原因:num1是UInt8类型,num2是类型Int,类型不同,不能相加

    解决方案:将num1转为Int类型,就能与num2进行相加

    下面的语句是正确的

    let sum: Int = Int(num1) + num2

    示例2:

    注意:下面的语句是错误的

    let num1 = 3 // num1是Int类型

    let num2 = 0.14 // num2是Double类型

    let sum = num1 + num2

    第3行报错说明:

    报错原因:num1是Int类型,num2是类型Double,类型不同,不能相加

    解决方案:将num1转为Double类型,就能与num2进行相加

    下面的语句是正确的

    let sum = Double(num1) + num2

    注意:

    下面的写法是正确的

    let sum = 3 + 0.14

    3和0.14相加得到结果3.14,等赋值以后,编译器才会自动推断出sum是Double类型

    七、类型别名

    可以使用typealias关键字定义类型的别名,跟C语言的typedef作用类似

      typealias MyInt = Int // 给Int类型起了个别名叫做MyInt

    原类型名称能用在什么地方,别名就能用在什么地方

      声明变量常量类型

      let num: MyInt = 20

    获得类型的最值

      let minValue = MyInt.min

    类型转换

      let num = MyInt(3.14) // 3

     
     
  • 相关阅读:
    @RequestParam注解使用:Name for argument type [java.lang.String] not available, and parameter name information not found in class file either.
    cglib动态代理导致注解丢失问题及如何修改注解允许被继承
    springboot Autowired BeanNotOfRequiredTypeException
    git根据用户过滤提交记录
    不同包下,相同数据结构的两个类进行转换
    How to use Jackson to deserialise an array of objects
    jooq实践
    java如何寻找main函数对应的类
    Python--matplotlib
    Python 和 Scikit-Learn
  • 原文地址:https://www.cnblogs.com/LiLihongqiang/p/5740067.html
Copyright © 2020-2023  润新知