Swift学习_基础语法之常量&变量&数据显示转换&可选类型

Swift

目录

1.声明一个变量打印
2.数据类型的显式转换
3.常量和变量的输出

  1. 直接输出
  2. 输出多个变量
  3. 使用占位符将变量或者常量加入到字符串中输出
  4. 将上面组合输出

4.简单数据类型

  1. 整形
  2. 浮点型 Double和Float
  3. Bool 布尔类型

5.可选类型

  1. 可选常量
  2. 可选变量
  3. 解包
  4. 隐式解析可选类型

小结

1.声明一个变量打印

Swift中,汉字和图片表情都可以作为变量名
var start:String;
start = "Hello world"            
print(start)              // 输出 Hello world
start = "HarrySun"
print(start)              // 输出HarrySun


//var name   // 这样声明编译报错,要么说明类型,要么赋值,让编译器自动判断类型。



var start2 = "hello world"  // 自动判断为String,
print(start2)      // 输出 hello world
//start = 10  // 因为start被自动判断为String,所有start被赋值10,会编译出错



let a:Int = 10
let b = 10  // 类型自动判断为Int
let c = 100,d = 20, e = 30
print(e)        // 输出 30


let width = 100.0  // 类型自动判断为Double
print(width)        // 输出 100.0

2.数据类型的显式转换

let numA = 10
let numB = 20.5
//let num1 = numA + numB  //  这里会系统自动报错因为,系统不会自己进行隐式类型转换,必须手动的进行显式转换。

let num1 = numA + Int(numB)
let num2 = Double(numA) + numB;
// 此时得到的num1和num2类型完全不一样,num1是Int类型,而num2是Double类型的

注意:在swift中,不允许任何形式的数据类型自动转换,只能强制转换

3.常量和变量的输出

1) 直接输出
// 汉字和图片表情都可以作为变量名
let name = "HarrySun"
print(name)              // 输出 HarrySun

let 浩子 = "haozi"  
print(浩子)              // 输出 haozi          

var 😁 = "笑"          
print(😁)              // 输出 笑        

let 😭 = 100         
print(😭)              // 输出 100  
2) 输出多个变量
print(😁,😭)              // 输出 笑 100
print(name,字符串)              // 输出 HarrySun haozi
3) 使用占位符将变量或者常量加入到字符串中输出
let city = "Beijing"
print("welcome to \(city)")              // 输出 welcome to Beijing
print("\(😁) 一个")              // 输出 笑 一个
4) 将上面组合输出
print("欢迎来到\(city),来,\(😁)一个,", 浩子)              // 输出 欢迎来到Beijing,来,笑一个, haozi

4.简单数据类型

1) 整形

** 分为有符号和无符号的整形,也分为8位,16位,32位的,64位的,这不同位的和平台没有任何关系,只有Int和UInt与平台有关系 **

let minA = UInt8.min  // 获取无符号的8位数的最小值,
let maxA = UInt8.max  // 获取无符号的8位数的最小值,
let numB:UInt16 = 100
print(numB)

// var maxC:UInt8 = 289  // 编译报错,因为289超出255最大值的值
var maxC:UInt8 = 240
print(maxC)
2) 浮点型 Double和Float

Double是64位浮点型编译器根据自动判断的类型,也是系统默认的类型,如何要用Float(32位低精度浮点型),在定义变量时必须说明Float

let  width = 100.5   // width 默认Double
let height:Float = 20  // height是Float的低精度浮点型,具体值是20.0

// 常见提示-------以下都是正确的表示,为了提高数值的易读性--------
let a = 3_500_000  // 此时的a是3500000下划线是分隔数值用的
print(a)  //编译通过

var b = 003.5  // 此时的b是3.5

var c = 1.25e2 // 表示1.25 * 10^2 等于 1.25*100 就是125
3) Bool 布尔类型

在oc中非0即真,但是在swift只有2个值属于Bool类型 就是false和true

let hasResult = true
var hasError = false

5.可选类型

1) 可选常量

**let 常量名 :常量类型? = 常量值 **

let a:Int?
// 声明可选常量必须指定常量的常量类型,常量类型可以是任何类型的数值,也可以是nil,等以后再赋值
// print(a) 这里编译报错,因为可选常量a 没有赋值  在使用前必须进行赋值
2) 可选变量
// var 变量名:变量类型 = 变量值
// var b:Int
// print(b)  这里会编译出错,因为b是Int没有赋值,使用时要赋值,如果是Int可选类型,这里就可以编译通过,表示nil

var c:Int?
print(c)          // 输出 nil

var d:Int? = 10  //给可选变量赋值以后,   它的值就是实际值
print(d)        // 输出 Optional(10)

var e:Int? = 10
e = nil

// 只有可选类型可以赋值,非可选类型不能赋值,例如下班这个会报错
var f:Int = 100
// f = nil  此时编译报错   所有说只有可选型类型可以为nil 其他都不可以
3) 解包
var g:Int? = 10
// print(10 + g)  此时编译报错,可选类型不能直接参与计算
// 此时就需要解包,“!”

print(g!+10)       // 输出 20
// 这样就编译通过了进行解包就可以用参与运算,但是这里的前提是可选类型必须有实际值,如果为nil,就不能解包参与运算,例如下面

// print(10 + c!) 编译失败,因为c为nil ,所有在强制解包时 一定要保证可选类型非nil的,方法是通过if语句提前进行判断;不然解包不安全,程序会crash掉


var name: String? = "loveway"
if name != nil {
    print("My name is " + name!)     // 输出 My name is loveway
} else {
    print("name is nil")
}

//判空可以解决这个不安全问题,但是这样写比较麻烦,可以用if let 解包

var name2:String? = "HarrySun"
if let name3 = name2 {
    // 这里面只能用if let 解包后的常量名
    print("My name is " + name3)      // 输出 My name is HarrySun
}else {
    print("name is nil")
}


  // 这里叫可选绑定,会进行以下两部操作
  // 1>判断book是否有值,如果没有值,直接不执行{}
  // 2>如果book有值,系统会自动将name进行解包,并且将解包后的结果,赋值给book2

var book:String? = nil
if let book2 = book {
    // 这里面只能用if let 解包后的常量名
    print("Book name is " + book2)         
}else{
    print("book name is nil")        // 输出 book name is nil
}
4) 隐式解析可选类型
// 对于可选类型每次解包再参与试用特别麻烦,所有就定了了一个隐式解析一下可选类型,
// 隐式解析可选类型本质是一个可选类型,被当做一个自动解析的可选类型,然后就可以被当做非可选类型有值得时候

// 下面是声明隐式解析的可选常量和变量

var numA:Int! = 10
let numB:Int! = 200

// 下面看一下,可选类型的定义和使用,以及隐式解析可选类型的定义和使用
let schoolName:String? = "北京大学"
print(schoolName!)      // 输出 北京大学

let schoolName2:String! = "清华大学"
print(schoolName2)      // 输出 清华大学

// 由于隐式解析可选类型本质是可选类型,除了在使用的时候不用每次解包取值之外,其他特征和
// 隐式解析可选类型不能设为nil,使用的时候也要进行if判断

if schoolName2 != nil {
    print("学生名称")      // 输出 学生名称     
}

// -------------空合并运算符 "??"---------

let numC:Int? = nil
print(numC ?? 0)       // 输出 0
// 这里就是说明如果可选类型为nil时,numC就去后面的默认值0
// 空合并运算符有2个条件:表达式a必须是可选型,默认值数据类型必须和a值的数据类型一致

小结

代码已上传至git:
--> 传送门:Swift_基本语法

附录

查看完整专栏《Swift学习》

有问题欢迎指正以及相互探讨 —— CoderSun

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容