您现在的位置是:首页
>
什么叫数据类型 数据类型详细资料大全
数据类型详细资料大全 数据类型在数据结构中的定义是一组性质相同的值的集合以及定义在这个值集合上的一组操作的总称。变数是用来存储值的所在处,它们有名字和数据类型。变数的数据类型决定了如何将代表这些值的位
数据类型详细资料大全
数据类型在数据结构中的定义是一组性质相同的值的集合以及定义在这个值集合上的一组操作的总称。
变数是用来存储值的所在处,它们有名字和数据类型。变数的数据类型决定了如何将代表这些值的位存储到计算机的记忆体中。在声明变数时也可指定它的数据类型。所有变数都具有数据类型,以决定能够存储哪种数据。
数据类型包括原始类型、多元组、记录单元、代数数据类型、抽象数据类型、参考类型以及函式类型。

基本介绍
中文名:数据类型外文名:data type定义:值的集合作用:把数据分成所需记忆体大小的数据 定义,种类,数字型,位元组型,文本型,操作方法,转换,定植,定义
计算机中,以位(0 或 1)表示数据。数据的最小的定址单位称为位元组(通常是八位)。机器码指令处理的单位,称作字长。大部分对字长的指令解译,主要以二进制为主,如一个 32 位的字长,可以表示从0至2的32次方减1的无符号整数值,或者表示从负的2的32次方至2的32次方减1的有符号整数值。存在着特殊的算术指令,对字长中的位使用不同的解释,以此作为浮点数。 数据类型的出现是为了把数据分成所需记忆体大小不同的数据,编程的时候需要用大数据的时候才需要申请大记忆体,就可以充分利用记忆体。 例如大胖子必须睡双人床,就给他双人床,瘦的人单人床就够了。 根据预设规定,如果在声明中没有说明数据类型,则令变数的数据类型为 Variant。Variant 数据类型很像一条变色龙— 它可在不同场合代表不同数据类型。当指定变数为 Variant 变数时,不必在数据类型之间进行转换,Visual Basic 会自动完成各种必要的转换。 但是,如果知道变数确实总是存储特定类型的数据,并且还声明了这种特定类型的变数,则 Visual Basic 会以更高的效率处理这个数据。例如,存储人名的变数最好表示成 String 数据类型,因为名字总是由字元组成。 除变数外,数据类型也用于其它场合。在给属性赋值时,这个值就有数据类型;函式的参数也有数据类型。事实上,在 Visual Basic 中,凡是与数据有关的东西就与数据类型有关。声明变数 在使用非 Variant 变数之前,必须使用 Private、Public、Dim 或 Static 语句将变数声明为 As type。例如,下列语句分别声明了 Integer、Double、String 和 Currency 类型的变数: PrivateIAsIntegerDimAmtAsDoubleStaticYourNameAsStringPublicBillsPaidAsCurrency 一个声明语句可将多个声明组合起来,请看下列语句: PrivateIAsInteger,AmtAsDoublePrivateYourNameAsString,BillsPaidAsCurrencyPrivateTest,Amount,JAsInteger'注意,在这里Test和Amount是Variant数据类型,只有J是Integer数据类型 注意 如果不提供数据类型,则指定变数为预设类型。如上例中注释已说明,如果由于其它程式语言的经验使人感到同一个声明语句中的所有变数都有相同的指定数据类型(此例中为 Integer),那么,此处的结果可能会令人感到新鲜。种类
数字型
Visual Basic 支持几种 Numeric 数据类型— Integer(整型)、Long(长整型)、Single(单精度浮点型)、Double(双精度浮点型)和 Currency(货币型)。与 Variant 类型相比,Numeric 类型占用的存储空间通常要少。 如果知道变数总是存放整数(如 12 )而不是带小数点的数字(如 3.57),就应当将它声明为 Integer 类型或 Long 类型。整数的运算速度较快,而且比其它数据类型占据的记忆体要少。在 For...Next 循环内作为计数器变数使用时,整数类型尤为有用。 关于控制结构的详细资讯(取值范围,储存空间等),请参阅本词条后面的“数据类型概述”。 如果变数包含小数,则可将它们声明为 Single、Double 或 Currency 变数。Currency 数据类型支持小数点右面 4 位和小数点左面 15 位;它是一个精确的定点数据类型,适用于货币计算。浮点(Single 和 Double)数比 Currency 的有效范围大得多,但有可能产生小的进位误差。 浮点数值可表示为 mmmEeee 或 mmmDeee ,其中 mmm 是假数,而 eee 是指数(以 10 为底的幂)。Single 数据类型的最大正数值为 3.402823E+38,或 3.4 乘以 10 的 38 次方;Double 数据类型的最大正数值是 1.79769313486232D+308 或 1.8 乘以 10 的 308 次方。用 D 将数值文字中的假数部分和指数部分隔开,就会导致将该值作为 Double 数据类型来处理。同样,用这种方式使用 E,也会导致将该值作为 Single 数据类型来处理。位元组型
如果变数包含二进制数,则将它声明为 Byte 数据类型的数组。(本章后面的“数组”中将讨论数组)。在转换格式期间用 Byte 变数存储二进制数据就可保留数据。当 String 变数在 ANSI 和 Unicode 格式间进行转换时,变数中的任何二进制数据都会遭到破坏。在下列任何一种情况下,Visual Basic 都会自动在 ANSI 和 Unicode 之间进行转换。 除一元减法外,所有可对整数进行操作的运算符均可操作 Byte 数据类型。因为 Byte 是从 0 - 255 的无符号类型,所以不能表示负数。因此,在进行一元减法运算时,Visual Basic 首先将 Byte 转换为符号整数。 所有数值变数都可相互赋值,也可对 Variant 类型变数赋值。 在将浮点数赋予整数之前, Visual Basic要将浮点数的小数部分四舍五入,而不是将小数部分去掉。文本型
如果变数总是包含字元串而从不包含数值,就可将其声明为 String 类型。PrivateSAsString 然后可将字元串赋予这个变数,并用字元串函式对它进行操作。S="Database"S=Left(S,4) 按照预设规定,String 变数或参数是一个可变长度的字元串,随着对字元串赋予新数据,它的长度可增可减。 也可以声明字元串具有固定长度。可用以下语法声明一个定长字元串:String*size 例如,为了声明一个长度为 50 字元的字元串,可用下列语句:DimEmpNameAsString*50 如果赋予字元串的字元少于 50 个,则用空格将 EmpName 的不足部分填满。如果赋予字元串的长度太长,已不能成为定长字元串,则 Visual Basic 会直接截去超出部分的字元。 因为定长字元串用空格填充尾部多余的空间,所以在处理定长字元串时可发现,删除空格的 Trim 和 RTrim 函式是很有用的。 可将标准模组中的定长字元串声明为 Public 或 Private。在窗体和类模组中,必须将定长字元串声明为 Private。操作方法
转换
如果字元串表示数值,则可将字元串赋予数值变数。也可将数值赋予字元串变数。例如,将命令按钮、文本框和列表框放置在窗体中。在命令按钮的 Click 事件中输入下列代码。运行应用程式并单击命令按钮。PrivateSubCommand1_Click()DimintXAsIntegerDimstrYAsStringstrY="100.23"intX=strY'将字元串传递给数值变数。List1.AddItemCos(strY)'将字元串中数值的余弦值。'添加到列表框中。strY=Cos(strY)'将余弦值传递给字元串变数。Text1.Text=strY'在文本框中显示字元串。EndSub Visual Basic 会自动强制变数为适当的数据类型。在转换字元串和数值时要小心;如果传送字元串中的值不是数值,则在运行时会出错。逻辑型 若变数的值只是“true/false”、“yes/no”、“on/off”信息,则可将它声明为 Boolean 类型。Boolean 的预设值为 False。在下面的例子中,blnRunning 是 Boolean 变数,存储简单的 yes/no 设定。DimblnRunningAsBoolean'查看磁带是否在转。IfRecorder.Direction=1ThenblnRunning=TrueEndif日期型 Date 和 Time 值既可包含在特定的 Date 数据类型中,又可包含在 Variant 变数中。一般的 Date 特性适用于这两种类型。 详细信息 请参阅《在线上手册》的“高级变数主题”中的“在 Variant 变数中存储 Date/Time 值”部分。 当其它数值数据类型转换为 Date 时,小数点左边的值表示 Date 信息,小数点右边的值则代表 Time。午夜为 0,正午为 0.5。负数表示公元 1899 年 12 月 31 日之前的 Date。对象型 Object 变数作为 32 位(4 个位元组)地址来存储,该地址可引用应用程式中或某些其它应用程式中的对象。可以随后(用 Set 语句)指定一个被声明为 Object 的变数去引用应用程式所识别的任何实际对象。DimobjDbAsObjectSetobjDb=OpenDatabase("c:Vb5Biblio.mdb") 在声明对象变数时,请试用特定的类,而不用一般的 Object(例如用 TextBox 而不用 Control,或者象上面的例子那样,用 Database 取代 Object)。运行应用程式之前,Visual Basic 可以决定引用特定类型对象的属性和方法。因此,应用程式在运行时速度会更快。在“对象浏览器”中列举了特定的类。 当使用其它应用程式的对象,并在“对象浏览器”中的“类”列表中列举对象时,不要用 Variant 或一般的 Object,而应声明对象。这样可确保 Visual Basic 能够识别引用的特定类型对象,在运行时解决引用问题。 详细信息 关于创建和指定对象以及对象变数的更详细信息,请参阅本章后面的“创建对象”部分。 Visual Basic 提供了几种转换函式,可用来将值转换成特定数据类型。例如,用 CCur函式将值转换成 Currency 类型: PayPerWeek = CCur (hours * hourlyPay) 转换函式 将表达式转换成 Cbool Boolean Cbyte Byte Ccur Currency Cdate Date CDbl Double Cint Integer CLng Long CSng Single CStr String Cvar Variant CVErr Error 对目标数据类型,传递到转换函式的值必须是有效的,否则会发生错误。例如,如果想把 Long 型数转换成 Integer 型数,那么,Long 型数必须在 Integer 数据类型的有效范围之内。 相关信息请查阅本词条后面的 "数据类型概述"变体型概述 Variant 变数能够存储所有系统定义类型的数据。如果把它们赋予 Variant 变数,则不必在这些数据的类型间进行转换; Visual Basic 会自动完成任何必要的转换。例如:DimSomeValue'预设为Variant。SomeValue="17"'SomeValue包含"17"(双字元的串)。SomeValue=SomeValue-15'SomeValue包含数值2。SomeValue="U"&SomeValue'SomeValue包含"U2"(双字元的串)。 不必过多关注 Variant 变数中数据的类型就可对 Variant 变数进行操作,但须避免落入陷阱。 如果对 Variant 变数进行数学运算或函式运算,则 Variant 必包含某个数。更详细的信息,请参阅《在线上手册》中“高级变数主题”中的“变数中存储的 Numeric 值”部分。 如果正在连线两个字元串,则用 " & " 操作符而不用 " + " 操作符。更详细的信息,请参阅《在线上手册》中“高级变数主题”中的“Variant 变数中存储的 Strings”部分。 除了可以像其它标准数据类型一样操作外,Variants 还包含三种特定值:Empty,Null 和 Error。定植
Empty 值 有时需要知道是否已将一个值赋予所创建的变数。在赋值之前,Variant 变数具有值 Empty。值 Empty 是异于0、零长度字元串 ("") 或 Null 值的特定值。可用 IsEmpty 函式测试 Empty 值:IfIsEmpty(Z)ThenZ=0 当 Variant 变数包含 Empty 值时,可在表达式中使用它;将其作为 0 或零长度字元串来处理,这要根据表达式来定。 只要将任何值(包括 0、零长度字元串或 Null)赋予 Variant 变数,Empty 值就会消失。而将关键字 Empty 赋予 Variant 变数,就可将 Variant 变数恢复为 Empty。 Null 值 Variant 数据类型还可包含一特定值:Null。Null通常用于资料库套用程式,表示未知数据或丢失的数据。 由于在资料库中使用 Null 方法,Null 具有某些唯一的特性: 对包含 Null 的表达式,计算结果总是 Null。于是说 Null 通过表达式“传播”;如果表达式的部分之值为 Null,那么整个表达式的值也为 Null。 将 Null 值、含 Null 的 Variant 变数或计算结果为 Null 的表达式作为参数传递给大多数函式,将会使函式返回 Null。 Null 值经由返回 Variant 数据类型的内在函式传播。 也可用 Null 关键字指定 Null 值。Z=Null 也可用 IsNull 函式测试 Variant 变数是否包含 Null 值。IfIsNull(X)AndIsNull(Y)ThenZ=NullElseZ=0EndIf 如果将 Null 值赋予 Variant 以外的任何其它类型变数,则将出现可以捕获的错误。而将 Null 值赋予 Variant 则不会发生错误,Null 将通过包含 Variant 变数的表达式传播(尽管 Null 并不通过某些函式来传播)。可以从任何具有 Variant 返回值的函式过程返回 Null。 除非明确将 Null 赋予变数,否则变数不会设定成 Null 值,所以,如果不在应用程式中使用 Null,就不必书写测试 Null 和处理 Null 的程式。 详细信息 关于如何在表达式中使用 Null 的详细信息,请参阅语言参考的“Null”部分。 Error 值 在 Variant 中,Error 是特定值,指出已发生的过程中的错误状态。但是,与其它类型错误不同,这里并未发生正常的应用程式级的错误处理。因此,程式设计师或应用程式本身可根据 Error 值进行取舍。利用 CVErr 函式将实数转换成错误值就可建立 Error 值。 详细信息 关于如何在表达式中使用 Error 值,请参阅语言参考中的“CVErr 函式”部分。关于错误处理的信息,请参阅“调试代码和处理错误”。有关 Variant 数据类型的更详细信息,请参阅《在线上手册》中的“高级变数主题”。存储空间大小与范围 以下表格显示所支持的数据类型,以及存储空间大小与范围。 数据类型 储存空间大小(单位:位元组) 范围 Byte(位元组型) 1 0 - 255 Boolean(布尔型/逻辑型) 2 True 或 False Integer(整数型) 2 -32,768 ~ 32767 Long(长整形) 4 -2,147,483,648 ~ 2,147,483,647 Single(单精度浮点型) 4 负数范围:
-3.402823E38 ~ -1.401298E-45
正数范围:
1.401298E-45 ~ 3.402823E38 Double
(双精度浮点型) 8 负数范围:
-1.797,693,134,862,32E308 ~
-4.940,656,458,412,47E-324
正数范围:
4.940,656,458,412,47E-324 ~
1.797,693,134,862,32E308 Currency
(变比整形 / 货币类型) 8 -922,337,203,685,477.5808~
922,337,203,685,477.5807 Decimal(十进制型) 14 没有小数点时:
+/-79,228,162,514,264,337,593,543,950,335
有小数点时:
+/-7.922,816,251,426,433,759,354,395,033,5
最小的非零值:
+/-0.000,000,000,000,000,000,000,000,000,1 Date(时间日期型) 8 100年1月1日~9999年12月31日 Object(对象型) 4 任何 Object 引用 String (变长) 10 长度从 0 到 大约 20 亿 String (定长) 10 长度从 1 到大约 65,400 Variant (数字) 16 任何数字值,最大可达 Double 的范围 Variant (字元) 22 与字元串长度,变长 String 有相同的范围 用户自定义变数 - - 任何数据类型的数组都需要 20 个位元组的记忆体空间,加上每一数组维数占 4 个位元组,再加上数据本身所占用的空间。数据所占用的记忆体空间可以用数据元数目乘上每个元素的大小加以计算。例如,以 4 个 2 位元组之 Integer 数据元所组成的一维数组中的数据,占 8 个位元组。这 8 个位元组加上额外的 24 个位元组,使得这个数组所需总记忆体空间为 32 个位元组。 包含一数组的 Variant 比单独的一个数组需要多 12 个位元组。 定类,定序;定比;定距
很赞哦! (1057)