💡通用知识

静态+动态语言、强+弱类型、基本+复合类型、值类型+引用类型

在计算机科学和计算机编程中,数据类型(或类型)是数据的一个属性。它限制了表达式(比如变量/函数)可能采用的值,告诉编译器或解释器,程序员打算如何使用数据。

类型系统

数据类型是在类型系统中使用的。

类型系统提供了定义、实现和使用数据类型的各种方法,它通常被指定为编程语言的一部分,并内置在解释器和编译器中。

主要目的

类型系统的主要目的是减少程序出错的可能性,它将类型和每个计算值相关联,通过检查这些值的流向来确保或证明不会发生类型错误。检查可以是静态的(在编译时),也可以是动态的(在运行时),也可以是两者的结合。

类型系统还有其它用途,比如启用编译器的某些优化。

类型安全

不同的类型系统提供不同程度的类型安全,类型安全是编程语言阻止或防止类型错误的程度。

强类型和弱类型(也称松散类型)就是编程语言用来指代类型安全的一个方面。弱类型语言在执行隐式类型转换的时候有可能会产生不可预测的结果。

  • strongly typed,强类型

  • weakly typed / loosely typed,弱类型或松散类型

原始数据类型

primitive data type,原始数据类型

原始数据类型可以是基本类型(作为基本构建块),也可以是内置类型(提供内置支持)。

在大多数编程语言中,基本类型都是内置的。大多数语言也支持从基本类型递归构造更复杂的复合类型,许多语言还会提供一组复合数据类型。

操作是快的

基于不同的语言及其实现,原始数据类型可能和计算机内存中的对象是一一对应的,也可能不对应。

通常我们都预期在基本原始类型上的操作是最快的,比如整数加法可以作为单个机器指令来执行,有些处理器提供特定的单指令来处理字符序列。

值类型

基本原始类型几乎总是值类型。值类型和引用类型是编程里的两种数据类型,做此区分的语言通常都会提供装箱和拆箱机制。

大多数语言都不允许程序有修改原始数据类型的行为和功能,无论是基本原始类型还是内置原始类型。

原始数据类型具体有哪些,取决于具体的编程语言。比如在 C# 中字符串是一种复合但内置的数据类型,而在 JavaScript 中字符串被同化为基本的和内置的原始数据类型。

常见的数据类型

几乎所有的编程语言都有明确的数据类型概念,尽管不同的语言可能会使用不同的术语。

常见的数据类型有整数、浮点数、字符、字符串、布尔值。

  1. Integer

  2. Floating-point number

  3. Character

  4. String

  5. Boolean

写在最后

了解这部分内容,可以为后续的知识提供一个相对科学的理解思路,以便我们有条理有重点地学习。

学习数据类型,需要了解类型的含义、该类型值的存储方式以及能执行的操作,即它是如何定义、实现和使用的。

JavaScript

在 JavaScript 里,有两种数据:原始值和对象。 原始数据类型 + 对象 = 基本数据类型。

在学习每个原始类型的时候,需要知道:

  1. 该原始类型有几个原始值?

  2. 原始值是如何存储的?会先从计算机的通用知识讲起,这有助于我们自主分析该类型的学习重点

  3. 该原始类型支持哪些操作?比如如何定义的、有什么注意事项等

说明:

  • 原始数据类型 ~ 原始类型,下文简称“类型“

  • 原始值,下文简称“值”

  • 在 JavaScript 中,基本类型 = 原始类型 + 对象

主要参考

Last updated