Swift基础_01数据类型和逻辑分支

内容总结

Swift中的数据类型

  • 整形和浮点型
  • 类型推导
  • 简单运算

Swift中的逻辑分支

  • if分支
  • guard
  • switch分支
    • switch介绍及基本使用
    • switch的语法补充
      • switch判断浮点类型
      • switch判断字符串类型
      • switch判断区间类型

Swift中的数据类型

  • Swift中的数据类型也有:整形、浮点型、对象类型、结构体类型等等

  • 先学习整形和浮点型

    • 整形
      • 有符号
        • Int8:有符号8位整形
        • Int16:有符号16位整形
        • Int32:有符号32位整形
        • Int64:有符号64位整形
        • Int:和平台相关(默认Int类型,相当于OC的NSInteger)
      • 无符号
        • UInt8:无符号8位整形
        • UInt16:无符号16位整形
        • UInt32:无符号32位整形
        • UInt64:无符号64位整形
        • UInt:和平台相关(常用,相当于OC的NSUInteger)(默认)
    • 浮点型
      Float :32位浮点型
      Double:64位浮点型
  • 类型推导

    • 如果在定义一个标识符的时候,有直接给该标识符进行赋值,那么可以将标识符后面的类型省略
    • 编译器会根据我们后面的赋值的类型,推导出前面标识符的类型,这个过程叫类型推导
    • 并且可以通过 option + 鼠标左键来查看标识符的类型
//利用类型推导省略 标识符:数据类型 示例 并且Xcde编译器在你声明标识符的时候的推荐的也是省略数据类型
let a = 24
var b = 2.44
let view = UIView()
let btn = UIButton()
  • Swift中的基本运算

    • 在Swift中进行基本运算的时候必须保证类型一致,否则会报错
    • 因为Swift中没有隐式转换
    • 数据类型的转化
      • Int类型转成Double类型:Double(标识符)
      • Double类型转成Int类型:Int(标识符)
let i = 20        //整形
let d = 15.2    //Double类型

//let p = m + n 错误写法 会报错
//必须进行类型转换 让运算标识符的类型一直
let dp = Double(i) + d // 35.2
let ip = i + Int(d)    // 25

Swift是强类型语言

  • 注意:即使同为浮点型,如果一个是Double 一个是CGFloat一样也不能直接运算

let d2 :Double = 2.55
let f :CGFloat = 3.22

//let resalt = d2 + f 错误写法 会报错

//正确写法
let resault = d2 + Double(f)

逻辑分支

  • 逻辑分支的介绍

    • 分支 if / switch / 三目运算符等判断语句
    • 通过分支语句可以控制程序的执行流程
  • if分支语句

    • 和OC中的if语句有一定的区别
    • 判断语句可以不加()
    • 在Swift的判断语句中必须有明确的真假
      • 不再有非0(nil)即真 Bool(false/true)
      • 必须有明确的Bool值
      • Bool有两个取值:false/true
 if的用法 OC的中的用法
 if(a>0){
 
 }
 if(a){//非0 即真 只要a 不是0或者空都能来到这个判断
 
 }
  • if 和else if 在Swift中的基本用法

let num = 1
if num > 0 { //可省略条件后面的() ,并且条件要明确
    print("a 大于0")
}else if num == 0 {
    print("a =0")
}else {
    print("a 小于 0")
}

if a != 0 {
    print("a 不等于0")
}
  • guard的使用

    • guard是Swift2.0新增的语法
    • 它与if语句非常像似,它设计的初衷是提高代码的可读性
    • guard必须要带有else语句,语法如下
      • 当条件表达式为true的时候跳过else语句的内容,执行语句组(下面的)内容
      • 条件表达式为false的时候执行else语句中的内容,跳转语句一般是 return break continue throw
        语法
guard 条件表达式 else {
 
 
     break
 }
 
 语句组
例子 多重条件判断一个人能不能上网
let age = 20
let haveIdCard = true
let haveMoney = true
func canOnline (age:Int) {
    if age > 18 {
        if haveIdCard {
            if haveMoney {
                print("可以上网")
            }else{
               print("取钱")
            }
        }else{
            print("拿身份证")
        }
    }else{
        print("不能上网")
    }
}

canOnline(age: age)
可以看出多重判断之后 该函数看起来很复杂 代码阅读性变差
改成 guard
func guardCanOnline (age:Int) {
    
    guard age>=18 else {
        print("不可以上网")
        return
    }
    guard haveIdCard else {
        print("回家拿身份证")
        return
    }
    guard haveMoney else {
        print("没钱上什么网")
        return
    }
    print("开心上网吧")
    
}
对比上例 实现一样的需求 这样这个判断上网的函数是不是看起来清爽很多呢?

switch分支

  • switch的介绍
    • switch作为选择结构中必不可少的语句在Swift中地位也很重要
    • 但是苹果对switch进行了大大的加强,使其拥有其他语言中没有的特性
      • switch的简单使用
      • 和OC的区别
        • switch后面的()可以省略
        • case语句结束时可以不加break也不会产生case穿透
  • switch的基本使用
    • switch()可以省略
    • case结束可以不break
  • 基本使用补充
    • case后面可以加多个条件
    • 如果希望产生case穿透,可以在case结束时加上fallhrough
    • 可以判断多种类型
      • 浮点型
      • 字符串类型
      • 区间类型

代码示例 基本使用

//sex 代表性别 0 男 1 女
let sex = 0

switch sex {
case 0:
    print("boy")
case 1:
    print("girl")
default:
    print("人妖啊")
}
  • switch基本语法的补充
    • 在Swift中,switch后面case可以判断多个条件
    • 如果希望case结束的时候可以产生case穿透,可以在case结束后加上fallthrough
switch sex {
case 0,1:
    print("正常人")
    fallthrough
default:
    print("人妖啊")
}

switch判断其他类型

  • 判断浮点类型
let pai = 3.14

switch pai {
case 3.14:
    print("与π相等")
default:
    print("与π不相等")
}
  • 判断字符串
let num1 = 20
let num2 = 30

let oprationStr = "+"


switch oprationStr {
case "+":
    print(num1+num2)
case "-":
    print(num1-num2)
case "*":
    print(num1*num2)
case "/":
    print(num1/num2)
default:
    print("非法的操作符")
}
  • 判断区间
    • 区间
      • 半开区间 0~9 0..<10
      • 闭区间 0~9 0...9
let score = 90

switch score {
case 0..<60:
    print("不及格")
case 60..<80:
    print("及格")
case 80..<90:
    print("良好")
case 90...100:
    print("优秀")
    
default:
    print("不合理的成绩")
}

while和do while循环

  • OC中的的while循环
 int a = 0 
while (a>0) {
a++;
}
while(a) {

}
  • Swift中
    • while后面可以省略()
    • 没有非0即真的说法 与前面提到的一样Bool(true/false)
var m = 0
while m <10 {
        m+=1  //Swift3.0中没有了 i++ 这种语法
        print(m)
}
//Swift中没有了do while 语法  改成了 repeat while
repeat {
       m-=1
      print(m)
}while m > 0


后续

给能看到文章最后的你一个赞,肯定了乐于学习的你。愿我们在学习的路上一去不复还

联系我,点赞也行吐槽也迎

邮箱 [email protected]

QQ 351795515

你可能感兴趣的:(Swift基础_01数据类型和逻辑分支)