美文网首页Swift与OCiOS DeveloperiOS 开发
01Swift常量,变量与基本数据类型以及运算符

01Swift常量,变量与基本数据类型以及运算符

作者: 高俊 | 来源:发表于2016-02-18 13:59 被阅读292次

    简介

    Swift是一种全新的语言,他是苹果官方推荐我们使用的一门语言,他比我们的OC还要简洁,直接。
    当然,他的书写方法与我们的OC也有一定的区别

    打印Hello World

    printf("Hello Word")
    

    注意:Swift语法中是不需要在语句后面加上分号的

    01、常量与变量

    打印我们hello world !!!

    | OC | NSLog(....); |
    | -- | - -------- |
    | Swift |** print(...)**|

    注意:我们的Swift是不需要加上分号的

    什么是常量?

    常量就是在程序运行的过程中值永远不会变得量

    什么是时变量?

    顾名思义:时变量就是在程序运行过程中,值不断变化的量

    类型 声明方法
    常量 let
    时变量 var

    常量定义方式

    1、你可以选择任意你喜欢的字符、或者是Unicode(就是Mac表情)字符定义常量、变量名
    2、常量名、变量名不能包括以下几种符号:
    数学符号、箭头、保留的(非法的)Unicode码位、连线、制表符
    也不能以数字开头、但是可以在常量、变量名的其他地方包含数字
    注意:Swift在定义常量的时候必须进行初始化,OC不用,但是Swift如果不进行初始化,就会报错

    let max = 100
    let 👿 = 200
    

    在Swift中如果想要先定义一个变量,
    以后使用时在初始化必须在定义时告诉编译器变量的类型(类型标注)
    写法为:

    var age: Int
    age = 20
    

    定义的同时初始化:

    在Swift中如果定义的同时初始化一个变量,可以不用写数据类型,编译器会根据初始化的自动推断出变量的类型(类型推断机制

    var age: Int = 20
    var age = 20
    

    02、swift基本数据类型

    基本数据类型

    OC:
    整型:int intValue = 10;
    浮点型:double doubleValue = 10.10; float floatValue = 5.1;
    长:long
    短:short
    有符号: signed
    无符号: unsigned
    各种类型的数据的取值范围在不同位的编译器下取值范围不同

    Swift:注意关键字的大写
    整型

    var intVlue: Int = 10
    

    浮点型

    var intValue1: Double = 10.10 // 表示6位浮点数
    var intValue2: Float = 9.3 // 表示32位浮点数  
    

    如果按照长度划分:Swift中的长短比OC更加精确

    var intValue3: Int8 = 6
    var intValue4: Int16 = 7
    var intValue5: Int32 = 8
    var intValue6: Int64 = 9
    

    有符号、无无符号

    默认有符号的是(UInt8/UInt16/UInt32/UInt64)

    var uintValue: UInt = 10
    

    注意:无符号的数比有符号的取值范围更大,因为符号也用来存值

    Swift是类型安全的语言,如果取值错会直接报错,而OC不会

    取值错误:
    OC:

    unsigned int intValue = -10;//不会报错
    

    Swift:

    var intValue: UInt = -10 // 会报错
    

    溢出:
    OC:

    int intValue = INT_MAX + 1; // 不会报错
    

    Swift:

    var intValue:UInt = UInt.max + 1 // 报错
    

    数据类型的相互赋值(隐式类型转换)

    OC可以隐式类型转换:

    int intValue = 10;
    double doubleValue = intValue;
    

    Swift不具备有隐式类型转换:
    以下语句会报错:

    var intValue: Int = 10
    var doubleValue: Double = intValue
    

    数据类型转换

    Swift不允许隐式类型转换,但是可以使用显示类型转换(强制类型转换)
    OC写法

    int intValue = 10;
    double doubleValue = (double)intValue;
    

    Swift写法

    var intValue: Int = 10
    var doubleValue: double
    doubleValue = Double(intValue)
    

    注意:Double()并不会修改intValue的值,而是通过intValue的值生成一个临时的值赋值给doubleValue

    print(intValue)
    print(doubleValue)
    

    3、SWift运算符

    这里就简单的说一说
    +、-、*、/、%、++、--
    其实Swift与OC运算符只有一个取模不同,其他的完全相同,包括优先级
    只是取模中Swift还能够进行小数取模,包括优先级

    注意:Swift是安全严格的编程语言,会在编译的时候检查是否溢出 但只是会检查字面量而不会检查变量
    所以在Swift中一定要注意隐式溢出
    遇到这种情况解决办法就是
    (http://www.yiibai.com/swift/overflow_operators.html)

    取模

    // OC: 只对整数取模
    NSLog(@"%tu", 10 % 3);
    // Swift支持小数取模
    print(10 % 3.5)
    

    自增自减

    var number = 10
    number++
    print(number)
    number--
    print(number)
    

    赋值运算

    var num1 = 10
    num1 = 20
    num1 += 10
    num1 -= 10
    num1 /= 10
    num1 *=10
    num %= 10
    print(num1)
    

    注意: Swift的基本语法和OC一样, 唯一要注意的就是表达式的值

    OC: 变大时的结合方向是从左到右
    整个表达式的值整体是等于最后一个变量的值, 简而言之就是连续赋值 写法为 :

    int num1;
    int num2;
    num1 = num2 = 10;
    NSLog(@"%d", num2);
    

    在Swift中不允许连续赋值, Swift的整体表达式是没有值的. 主要是为了避免if (c == 9) 误写成if (c = 9)
    c = 9 是一个表达式, 表达式是没有值的 所以在Swift中if (c = 9)不成立 会报错

    // Swift中这种写法是错误的
    var num1: Int
    var num2: Int
    num2 = num1 = 10
    

    4. 逻辑运算符

    C语言和OC并没有真正的Bool类型
    C语言的Bool类型非0即真
    OC语言的Bool类型是
    typedef sighed char Bool;

    Swift中引入了真正的Bool类型
    Bool true false

    • Swift中if的条件只能是Bool的值或者是返回值是Bool类型的表达式
    • OC中if可以是任何只能是一个Bool的值或者是是Bool类型的表达式
      OC中if 可以是任何整数(非0即真), 但是存在的问题是可能是将判断写错, 写成赋值 if (isOpen = 2)
      在开发中为了避免这个问题
      有经验的程序员或这样写if(2 == isOpen)来避免这个问题.
      在Swift中很好解决这个问题

    逻辑运算符在Swift当中之能操作Bool类型数据
    在OC当中是非0即真. 可以操作整型
    在swift中不允许这种操作, 其他基本和OC一致

    var open = false
    if !open
    {
          print("打开")
    } 
    
    var age = 20
    var height = 180
    var wage = 30000
    if (age > 25 && age < 40 && height > 175 ) || wage > 20000
    {
        print("卧槽")
    }
    

    5. 区间

    • 闭区间: 包含区间内所有值 a...b 例如 1...5

    • 半闭区间: 包含头不包含尾 a..<b 例如: 1..<5
      注意:

    • Swift刚出来时的写法是a..b

    • 区间只能用于整数, 写小数会有问题
      for i in 1...5
      {
      print(i)
      }

        for i in 1..<5
        {
            print(i)
        }
      

    作者说

    • 不好意思, UI文集暂时不更新了. 本人先将Swift笔记更新完. 以后的UI将会用Swift语言写.
    • 本人Swift学的并不成熟. 如果有不对的地方请各位指点. 后面我会继续努力的.
    • 寒假快要结束了, 先前一段时间一直在老家 . 没网😭😭😭 ,这两天刚到外面. 一到外面就开始写笔记了.
    • 初次接触Markdown. 见谅哈

    相关文章

      网友评论

      本文标题:01Swift常量,变量与基本数据类型以及运算符

      本文链接:https://www.haomeiwen.com/subject/gwmmkttx.html