大多数程序设计语言都有数据类型的概念,数据类型指定义一组数据值以及在这些数据值上相关的一组操作。
我们知道计算机通过操作数据来产生结果,决定计算机程序执行认为难易程度的一个重要原因是可提供的数据类型与真实世界问题空间的匹配程度。因此,一种语言能支持多样化的类型与结构就成为关键。
数据类型的概念是从过去50年间发展过来的
最早的语言仅支持少量的数据结构,如Fortran 90之前通常用数组来模拟链表及二叉树。
COBOL允许程序员指定小数的精度,并通过记录提供一种结构化的数据类型,跨出了Fortran I模式的第一步。
PL/I更是将精度说明的功能扩展到整数及浮点类型,该功能从此也被引进到了Ada和Fortran。
ALGOL则开创式的引入了用户自定义类型的概念,它仅提供少数的基本类型以及少量灵活的结构定义操作符,却允许程序员为需求设计一种数据结构。显然,这是数据类型发展过程中最重要的进步。
1967年首次提出“类型”概念的Simula 67,把数据和被允许施与数据上的操作结合为一个统一体,从而成为现代“抽象数据类型”的开端及第一个“面向对象语言”。
1971年出现的Pascal也是在ALGOL之上扩充的。
从“用户自定义类型”这个概念往前一步,就到了“抽象数据类型”的阶段,抽象数据类型的基本思想是,类型的接口(对用户可见)与类型的表示及类型的值的操作相分离(对用户不可见)。高级程序设计语言提供的所有类型都是抽象数据类型。
少数语言如BLISS根本没有类型的概念,其它则是在编译时(ML、Haskel,C)或是运行时(Lisp、Scheme、JavaScript、Smalltalk等动态语言)自动维护类型信息。
类型起着两种主要作用
1. 利用类型信息的操作
为操作提供了隐含的上下文环境,如Java中如果a, b都是int类型,表达式a+b就会使用整数相加操作。
2. 通过类型信息捕捉错误
类型限制了语义上合法的程序里可以执行的操作集合。如类型不允许编程人员去做一个和字符串进行算术相加的操作。
类型的分类
不同的语言里有关类型的术语也不同,大部分语言所提供的内部类型(built-in)差不多就是大部分处理器硬件所支持的类型:整数、实数(浮点数)、布尔和字符。
布尔类型(也称逻辑类型)通常实现为一种一个字节的量,其中1表示true,0表示false。但C语言不同,它没有布尔类型,C的整数0表示false,非0都是true。
部分语言字符也实现为一个字节的量,通常采用ASCII编码,更新的语言则采用Unicode,如Java、JavaScript,这是国际化的标准。
只有为数不多的几种语言(C、Fortran)区别了不同长度的整数和实数,大多数语言把精度的问题留给了实现。也有少数语言(C、C++、C#、Modula-2)同事提供带符号和无符号的整数。还有几种语言(Fortran、C99、Common Lisp和Scheme)提供了内部的复数类型,一般实现为浮点数。
某些语言(Pascal、Java)还内置枚举类型,该类型由1984年图灵奖获得者Wirth首创,诞生于Pascal。这种类型有利于构造可读性更好的程序,也使编译器能扑捉一些种类的编程错误。
一个枚举类型由一组命名元素组成,Pascal中如下
type weekday = {sun, mon, tue, wed, thu, fri, sat};
Java中如下
public enum ColorSelect { red, green, yellow, blue; }
相关:
http://en.wikipedia.org/wiki/Data_types
http://en.wikipedia.org/wiki/Primitive_types
相关推荐
ECMAScript 中有 5 种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和 String。还有 1种复杂数据类型——Object,Object 本质上是由一组无序的名值对组成的。ECMAScript 不支持任何创建...
C++数据类型及取值范围 1.基本数据类型: ①字符类型:char(字符型) 例:‘A’,’b’ ②整数类型:int(整型) 例:4563, 234, 885634 ③浮点类型:float(单精度型)、double(双精度型) 例:3.1456 , 0.9e12 ④空值...
一些初学JAVA的朋友可能会遇到JAVA的数据类型之间转换的苦恼,例如,整数和float,double型之间的转换,整数和String类型之间的转换,以及处理、显示时间方面的问下面笔者就开发中的一些体会介绍给大家。 我们知道,...
数据类型就是对内存位置的抽象表达。程序员可以利用多种数据类型:某些由编程语言定义,某些由外部库定义,还有些则由程序员来定义。很多编程语言都依赖于特定的计算机类型和对数据类型属性的具体编译实现,比如word...
修复8字节数据类型,为数组时的BUG..测试通过,未实际使用到项目中...有问题在帖子里回复...注:自定义数据类型文本 必须跟 当前的数据类型一致,否则崩溃没商量...工作原理是根据 自定义数据类型 文本,来保存,还原...
默认情况下,AIDL只支持下列数据类型: Java八种基础数据类型(如 int、long、char、boolean 等); String字符串; CharSequence字符序列; List列表,List中的所有元素须是前面提到的数据类型,或者是Parcelable...
Python数据类型,在内存中存储的数据可以有多种类型。例如, 一个人的名字可以用字符来存储, 年龄可以用数字来存储, 爱好可以用集合来存储等等。Python有五个标准的数据类型: Numbers(数字) String(字符串)...
Java数据类型和MySql数据类型对应一览
资源名称:Java编程基础知识变量与数据类型资源目录:【】11957c6aed0bbd30e284837b53bc3a6f【】2.Java编程基础知识变量与数据类型1.数据类型初阶【】2.Java编程基础知识变量与数据类型10.浮点类型【】2.Java编程...
组态王的数据类型,详细的介绍,内存离散变量、I/O离散变量、2.内存实型变量、I/O实型变量
易语言自定义数据类型变量保存源码,自定义数据类型变量保存,CLSave
图的抽象数据类型实现 数据结构实验 广工 链表实现
SQL的数据类型与Java数据类型的对应关系,是程序员必备的基础知识,欢迎大家下载。
Oracle的数据类型: 1、CHAR数据类型,该类型是固定长度的字符串,如果没指定大小,则默认占用一字节,如果输入的值小于指定的长度,则数据库用空格填充至固定长度,如果用户输入的值大于指定的长度,则数据库...
oracle和sql数据类型
整数型数据包括bigint型、int型、smallint型和tinyint型。 浮点数据类型包括real型、float型、decimal型和numeric型。
用VBA获取access表名和各个表字段的数据类型
数据类型是数据的一种属性,表示数据所表示信息的类型。任何一种计算机语言都定义了自己的数据类型。当然,不同的程序语言都具有不同的特点,所定义的数据类型的各类和名称都或多或少有些不同。SQLServer提供了25种...
sqlserver数据库类型对应Java中的数据类型
实验项目名称: 抽象数据类型的实现 实验项目性质: 设计性实验 所属课程名称: 数据结构 以教材中讨论的各种抽象数据类型为对象,利用C语言的数据类型表示和实现其中某个抽象数据类型。 本资源包括了可执行文件、源...