【数据类型】种种数据类型

当我们在说同一个词的时候,它的意思往往不是同一个。因此做出相应对比整理来揭示区别。

一、数据模型类型

分逻辑模型和概念模型。

常见逻辑模型:关系模型(mysql)、列族模型(HBase、Cassandra,就是OneNote嵌套表格那样)、键值模型(redis、riak)、文档模型(MongoDB、CouchBase)、图模型(Neo4j、FlockDB)、层次模型(IMS)、网状模型。

二、文件数据类型

数据类型:数值型、文本型、音频型、视频型、图像型、POI型(point of interest,例如地图点)

数据结构化程度:结构化数据(二维表)、非结构化数据(文图音影,逻辑结构不严格)、半结构化数据(XML、JSON)

三、MySQL数据类型

数字、串、时间类型。

四、python的数据类型

1.数值型:整数、浮点数、复数、布尔值(在python可记为0或1因此为数值型)

2.串:字符串、字节串(0-255)

3.容器型:集合、元组、列表、字典、数组(数组在原生python中没有但numpy库有)

其实各个标准资料中没有说明Python有值类型和引用类型的分类,这个分类一般是C++和Java中的。但是语言是相通的,所以Python肯定也有类似的。实际上Python 的变量是没有类型的,这与以往看到的大部分语言都不一样(JS等弱类型的也是这样)。但 Python 却是区分类型的,那类型在哪里呢?事实是,类型是跟着内存中的对象走的。类型属于对象,变量是没有类型的。一般也分实参和形参。

《learning python》中的一个观点:变量无类型,对象有类型。

Python中的变量都是指针,这确实和之前学过的强类型语言是有不同的。因为变量是指针,所以所有的变量无类型限制,可以指向任意对象。指针的内存空间大小是与类型无关的,其内存空间只是保存了所指向数据的内存地址。Python 的所有变量其实都是指向内存中的对象的一个指针。

此外,对象还分两类:一类是可修改的,一类是不可修改的。我的理解是把可修改(mutable)的类型叫做值类型,不可修改(immutable)类型叫做引用类型。

对象=确定内存空间+存储在这块内存空间中的值。

Java中,对象是分配在堆上的,存储真正的数据,而引用是在栈中开辟的内存空间用于引用某一个对象(值类型的变量也是存储到栈上)。

在Python中,数值(整型,浮点型),布尔型,字符串,元组属于值类型,本身不允许被修改(不可变类型),数值的修改实际上是让变量指向了一个新的对象(新创建的对象),所以不会发生共享内存问题。 这种方式同Java的不可变对象(String)实现方式相同。原始对象被Python的GC回收。

五、JavaScript的数据类型

String 字符串、Number 数值 、Boolean 布尔值、Null 空值、Undifined 未定义、Object 对象、Symbol(ES6)。

六、C的数据类型

基本类型又包括整型类型、浮点类型。

整型类型 : {基本类型(int)、短整型(short int)、长整型(long int)、*双长整型(long long int)、字符型(char)、*布尔型(bool)}

浮点类型: {单精度浮点型(float)、双精度浮点型(double)、复数浮点型(float_complex、double_complex、long long_complex) }

枚举类型: (enum)

空类型 :(void)

派生类型: {指针类型(*)、数组类型([ ])、结构体类型(struct)、共用体类型(union)、函数类型}

七、java的数据类型

​ Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。

八、haskell的数据类型

数、串、布尔(haskell中有时候会把undefined视为一个布尔值,类似于三值逻辑。)

九、MATLAB的数据类型

特殊的数据类型是元胞。

十、数据结构的数据类型

链表、数组、栈、队列、哈希表、图(堆)、二叉树。

十一、数据进制类型

十二、数据编码类型

你可能感兴趣的:(数逻计科,算法)