Swift5-外行零基础入门_02-数据类型

数据类型

什么是数据类型?

我们知道,虽然我们在屏幕上看到的有文字,图片,视频等各种形式,但是在计算机中,都是以0和1的形式储存和运行的。因此我们把各种信息统称为数据。数据未必是数字的意思,它泛指一切存储在计算机中的信息。

在几乎是所有计算机语言中,我们给基本数据定义了不同的类型。比如,整型(Int),就是各种整数,1,2,3,123,56789这样的;浮点型(Float),就是小数,1.2,98.0这样的;字符串(String),可以暂时理解为文字,"Hello"这种。

为什么要有数据类型?

首先我们设想这样一个场景:

早晨起(床),吃完(早餐),出门穿上(外套),花(两元钱)买了公交(车票),到公司开始(干活)。

床-是家具,早餐-是食物,外套-是衣服,两元钱-是数量加单位,车票-是一种收据凭证,干活-是一系列的动作。

在这段描述中,我们的大脑其实处理了多种类型的数据。仔细分析一下,这些数据是不能错位使用的,比如,你从床上起来,而不能从早餐上起来;你穿上外套,而不能穿上车票;你在单位干活,而不能在单位起床(也许你可以,就当我没说)。我们的大脑从容的处理这些不同的数据类型,而且大部分时间是不会错用的。然而,很遗憾,计算机的发展水平还没到这一步。如今,计算机只能模拟简单的场景,比如我们的数学公式。

有一个看起来吊炸天的概念,Curry-Howard correspondence,柯里-霍华德对应,说的是计算机函数就相当于实现一个数学证明。其实是说明了计算机程序与数学之间的关系。比如:

x + y = z

如果x是1,y是2,z就是3。而如果你说x是1,而y是"Hello",人脑会报错,说你这样相加没有意义,或者直接给你一巴掌,说你耍我呢。换位思考,电脑也会做出类似反应,当然,打人的电脑目前还没有。

再看一个复杂点的公式,速度=路程➗时间:

v = s/t

人脑计算的时候,要搞清楚,路程是的单位是米还是公里,时间是分钟还是小时,速度的单位用米/秒,还是公里/小时。发现没有,人脑计算的时候,也要限定数据类型,不然没法计算。更何况是电脑!
总结下来,计算机实际上是一种仿生科学,它仿的是人的思维。
因此,学会换位思考吧,为电脑考虑考虑,把它当成一个心智发展还不健全,或者说不全面的对象,给它明确好数据类型,这样它才能帮你干活。

还有一件事,很多人会把为什么使用数据类型解释为计算机需要根据不同的数据类型分配不同的存储空间。我认为这种解释是因果倒置了,请读者自行判断。

计算机需要知道哪些数据类型?

有一些数据类型很普遍,几乎所有的计算机语言都差不多,比如之前提到的Int,Float,String等,swift也不列外,这种常用的数据类型,swift已经内置定义好了,你在使用数据时,直接说我这个数据就是某种类型就可以。

先看看内置的常用数据类型:

类型 说明 举例 备注
整型 Int 整数 1 (32位范围) -2147483648 到 2147483647
(64位范围)-9223372036854775808 到 9223372036854775807
浮点型 Float 小数(32位) 3.14 范围:1.2E-38 到 3.4E+38 (~6 digits)
Double 小数(64位) 范围:2.3E-308 到 1.7E+308 (~15 digits)
布尔值 Bool 真/假 True/False 只有True,False这两个值
字符串 String 字符 "hello"
可选类型 Optional 有/没有

除了内置的数据类型,在swift中,你还可以直接定义数据类型,比如后面提到的结构体等,都可以是数据类型的定义方式。这个我们后面再说。

还有哪些关于类型的知识?

我们在后面的学习中,会不断涉及到类型,除了上面说到关于类型的基础概念,再说一些需要提前知道的知识点和术语。

  • 类型注解:定义变量的同时,在冒号后面加个数据类型,这种定义方式叫做类型注解。
    var a: String
  • 类型推断:我们不需要时时刻刻给一个数据指定类型,Swift会推断。
    var b = "hello" // 系统自动推断b为String类型
  • 类型安全:一个数据一旦被定为某个数据类型,就不能更换类型了,Swift会自动提示错误。
    a = 10 // a在前面已经被认定为String型,将其赋值为整型值,就会报错。
  • 同时定义多个值:同一类型的值,可以同时定义
    var a, b, c: String // a,b,c三个变量都是String类型
  • 类型转换:Int,Float,Double这几个类型在人类看来本来就很相似。计算机看他们其实也很相似,因此,他们之间是能转换的。
    var value1 = Int(3.14)
    print(value1) // 3
    var value2 = Double(6)
    print(value2) // 6.0
    可选类型:可选类型稍微复杂些,我们下节再说。

做些练习吧!

高效率的学习手段有很多,练习是其中重要的一环,打开Playground,试试吧!

importUIKit
// 给一个变量指定为整型Int
// 定义变量的同时,在冒号后面加个数据类型,这种定义方式叫做类型注解。
var number: Int
number = 10        // 给这个变量赋值一个整型数据
// 成功
number = "Hello"    // 给这个变量赋值非整型数据
// 系统会报错

// 类型推断
var x = 6           // 系统推断x为Int类型
var str = "Tom"     // 系统推断str为String类型
var a = true        // 系统推断a为Bool类型
// 用type of打印出这几个变量的类型,验证我们的猜想。
print(type(of: x))      // "Int\n"
print(type(of: str))    // "String\n"
print(type(of: a))      // "Bool\n"

// 类型安全
// 之前的变量已经定义为某个类型,我们故意给这些变量赋予其他的值,系统就会报错
x = "H"
str = 666
a = "Hello"
// 上面这三行代码都会报错

// 类型转换
var value1 = Int(3.14)
print(value1)  // 3.0
var value2 = Double(6)
print(value2)  // 6.0

小结与预告

我们总结了编程语言中的基础概念-数据类型,数据类型存在的意义需要我们重点揣摩。另外,我们还介绍Swift中定义数据类型时需要注意的细节知识,关于细节知识,我们后面在运用的时候自然会用到,这里只要理解即可。
我们还遗留了一种数据类型,叫做可选类型,下节讨论。

你可能感兴趣的:(Swift5-外行零基础入门_02-数据类型)