上次跟大家聊了一些计算机的基本概念,今天跟大家聊聊数据类型(Data Type)这个基本概念。
数据类型可以分为三种:
Primitive 是最最基本的类型,就好比乐高积木的一个小正方形颗粒。
Composite 就是把 Primitive 或者 Composite 组合起来的类型。
那 Abstract 是什么类型呢?
这种类型是根据数据的行为特征来定义的(下面会详聊)。
绝大多数情况下,Primitive Type 都是 Value Type。
Value Type(实值型) 和 Reference Type(引用型)有很多区别,之前我做过一个基于 C# 的讲解视频,大家感兴趣的话可以去看一下,在此不继续展开。
Composite 类型要从两个方面来理解:
它用来描述一个包含多个 Primitive 或者 Composite 的数据类型。
比如 string 是 Composite 类型,char 是 Primitive 类型(a 是一个 char,ab 就是一个 string)。
string 的本质上不就是一堆的 char 吗?
于是人们就给【一堆 char】取了个名字,叫 string。
本质上,Composite 的排列组合是通过某种数据结构来实现的。
比如 string 的例子里,array 是我们用来组合 char 的数据结构(之后我们会聊数据结构)。
简称 ADT (Abstract Data Type)。
它基于数据结构的使用者角度,来描述这种数据结构的预期行为。
比如:
iterable 指的就是【从头到尾】查看某个数据结构里的【每个成员】的这种特性。
因为这只是一个抽象的想法,只是一种数据结构行为的描述。
所以我们可以用各种各样的数据结构来实现 list 所需要的行为,比如 ‘linked list’ 就是 ‘list’ 的一种实现形式。
接下来我们再谈谈另外的几种 Abstract 类型。
假如有 3 个数据排成一排,分别叫做 1 号数据,2 号数据,3 号数据。
1 号数据来的最早,3 号数据到的最晚。
现在我们可以根据两种不同的原则来拿数据:
根据这两种不同的行为,我们就有了这两个 Abstract 数据类型 —— queue 和 stack。
顾名思义,queue 是排队,也就是先来后到原则,1 号先来的,1 号就应该先出去。
stack 有叠加的感觉,既然是叠上去的,就很难把最下面的那个数据先拿出来,3 号最后一个来的,也是第一个出去的。
另外还有很多 Abstract 类型,比如 Tree, Graph, Set… 在这里暂时不做展开啦。 有一种很重要的 Abstract 类型,叫做 Associative Array(关联数组),我们接下来会讲到。
最后,总结一下本文的核心:
希望大家看完之后有所收获~