1.2 基本类型

swift对数据进行了分类,分类是人类认识这个世界的重要方法,我们在学习的过程中常常会用到这种方法,比方我们把世界分类为动物,植物,有机物无机物等等,这里有一个有趣的矛盾,我们一边对世界做分类,一边还要探索世界的本源,人类越是认识这个到这个世界的五彩缤纷,人类就也迫切希望能够知道这个世界的本源是什么。

这个矛盾也同时存在于swift语言当中。swift一面对数据做分类,一面通过对类型抽象来实现一致性的表达。我们先描述一下swift的分类,后面会详细整理类型的抽象。

1、基本类型

  • Int:表示整数,包括正数、零、负数,例如 1、0、-1

整型包括符号整型(Int)、无符号整型(UInt),每种类型又包括8、16、32、64位的表达形式,对于一个初学者来说,你完全可以暂时忽略这些内容,只简单使用 Int

  • String: 表示文本,例如我们已经使用过的 "Hello,swift",在swift中,用""括起来的内容基本就是文本类型。

注意
我们经常需要对String进行拼接、遍历、替换字符等操作,因为String是值类型,其内容又是characters集合类型,所以其可变性暂时超过了我们今天需要总结的内容,我后面会增补一个链接来补充总结。

  • 浮点数(Double、Float): 浮点数用来表示带有小数部分的数字,例如 3.1415926

浮点数分为两种类型,Double和Float,他们都可以表示浮点数,区别在于Double类型的精度更高,代价呢也就是占用的内存更多,精度有多高?留到我们整整需要了解的时候再研究吧,我们需要了解的是:swift默认会为你选择Double类型。

  • Bool: 布尔类型,用来表示 “真” 或者 “假”

Bool类型只有两个值,true和fase。Bool类型的值可以帮助我们来控制流程分支,否则恐怕我们只能写出线性执行的程序了。

有了这些基本类型我们就可以方便的为现实世界中的事物进行建模了,比方说我们来描绘一下一位同学的信息状况。

    var name = "小明" // 姓名 为 ”小明“,使用了String
    var age = 21     // 年纪 = 21 ,使用了 Int
    var height = 175.5 // 身高 = 175.5,使用了 浮点数(Double)
    var married = false // 婚姻状态 = false ,使用了 Bool 类型

2、类型安全

swift语言对类型的态度是非常“较真”的,有些语言确持有相反的态度,我们先看一下ruby语言对这个问题的处理方式

x = 10  // 先将变量x赋值一个整数
x = "Hello,World" // 现在将x重新赋值一个字符串,我们可以看到,赋值成功了

在面对用新的类型对x进行重新复制的时候,ruby表现出了”您随意“的宽容态度。我们继续看,我们对x进行一次数学运算操作会怎样。

x = 10
x = "Hello,World"
x = x - 1 // error !!!!!!

这时候ruby会毫不迟疑的抛出错误,态度是这样的:“这个错误和我可是没有关系的,完全是程序员自己赋值是类型弄错了”。这是宽容背后的残忍吗?

现在我们再看一下swift对同一个问题的态度,我们尝试将小明的年纪修改为一个字符串。

var age = 21
age = "Hello,World" // error !!!!!!

如果我们进尝试行这样的修改,那么我们会立刻得到swift编译器给我们的错误提示:“抱怨我们将一个String类型的值赋给一个Int类型的变量”。在ruby中可能会发生的错误,在swift中,绝对不允许,不允许。这就是swift对类型的态度。swift编译器会对类型进行严格的检查,明确每一个值所属的类型,禁止类型“错位”,把运行时错误降到最低。

3、类型推断

那么问题来了,swift是如何知道age是一个Int类型,而不是一个String类型的呢?这里swift使用了类型推断机制。当我们给age进行赋值21的时候,编译器会根据21的类型(Int),来推断出age的类型一定为Int类型。通常静态类型的语言会要求我们声明变量的时候,同时指明变量的类型,类型推断则是一种延时方式,允许我们将类型的确定延时到第一次赋值的时候。

4、显示声明

那我们是不是只有在变量赋值的时候才能确定一个变量的类型呢?当然不是了,swift同样为我们提供了显示声明的方式,允许我们在声明一个变量的时候就指定变量的类型。我们用显示声明的方式,从新描述一下小明的信息。

    var name: String = "小明" 
    var age: Int = 21 
    var height: Double = 175.5
    var married: Bool = false

显示声明时指定变量的类型的工作通常是重复又缺少意义的,swift为我们提供了类型推断机制,减轻我们编程的工作量,编译器越是聪明,我们的工作就会越轻松愉快。

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

推荐阅读更多精彩内容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,794评论 1 10
  • Swift 是一门开发 iOS, macOS, watchOS 和 tvOS 应用的新语言。然而,如果你有 C 或...
    XLsn0w阅读 922评论 2 1
  • 关于 Swift 重要这个文档所包含的准备信息, 是关于开发的 API 和技术的。这个信息可能会改变, 根据这个文...
    无沣阅读 4,292评论 1 27
  • 静待山茶花儿开…… 办公室里有一盆花,木本,叶子椭圆,很有生机。原来不认识她,不知道她叫什么名字,也就无从了解她的...
    六月_cef1阅读 483评论 0 2
  • 人善被人欺,这句话真的是一点没说错! 有些人老实话不多,勤奋又肯干,扎实还细心,上进能吃苦 可是为毛有那么多人就是...
    糊小姐阅读 199评论 2 4