数据类型
来自站长百科
数据类型在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作。 变量是用来存储值的所在处;它们有名字和数据类型。变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。在声明变量时也可指定它的数据类型。所有变量都具有数据类型,以决定能够存储哪种数据。
数据类型出现的原因[ ]
数据类型的出现,是因为电脑内存有限。 把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。
数据类型简介[ ]
- 根据缺省规定,如果在声明中没有说明数据类型,则令变量的数据类型为 Variant。Variant 数据类型很象一条变色龙— 它可在不同场合代表不同数据类型。当指定变量为 Variant 变量时,不必在数据类型之间进行转换,Visual Basic 会自动完成各种必要的转换。
- 如果知道变量确实总是存储特定类型的数据,并且还声明了这种特定类型的变量,则 Visual Basic 会以更高的效率处理这个数据。例如,存储人名的变量最好表示成 String 数据类型,因为名字总是由字符组成。
- 除变量外,数据类型也用于其它场合。在给属性赋值时,这个值就有数据类型;函数的参数也有数据类型。事实上,在 Visual Basic 中,凡是与数据有关的东西就与数据类型有关。
- 也可声明任何基本类型的数组。
带数据类型的变量[ ]
1、在使用非 Variant 变量之前,必须使用 Private、Public、Dim 或 Static 语句将变量声明为 As type。例如,下列语句分别声明了 Integer、Double、String 和 Currency 类型的变量:
- Private I As Integer
- Dim Amt As Double
- Static YourName As String
- Public BillsPaid As Currency
2、一个声明语句可将多个声明组合起来,请看下列语句:
- Private I As Integer,Amt As Double
- Private YourName As String,BillsPaid As Currency
- Private Test,Amount,J As Integer
3、如果不提供数据类型,则指定变量为缺省类型。在上例中,变量 Test 和 Amount 是 Variant 数据类型。如果由于其它编程语言的经验使人感到同一个声明语句中的所有变量都有相同的指定数据类型(此例中为 Integer),那么,此处的结果可能会令人感到新鲜。
几种数据类型范围[ ]
数据类型 | 大小 | 范围 |
---|---|---|
整数类型 | ||
Boolean | 1bit | 0 至 1 |
Byte | 8bit | 0 至 255 |
Word | 2 字节 | 0 至 65535 |
Double Word | 4 字节,32bit | 0 至 4,294,967,295 |
Integer | 4 字节,32bit | –2,147,483,648 至 2,147,483,647 |
Double Integer | 8 字节,64bit | –9,223,372,036,854,775,808 至 9,223,372,036,854,775,807 |
浮点类型 | ||
浮点数 | 4 位元組 | 1E-37 至 1E+37 (6 个小数位数) |
Double Float | 8 位元組 | 1E-307 至 1E+308 (15 个小数位数) |
常见的几种数据类型简介[ ]
Numeric[ ]
- Visual Basic 支持几种 Numeric 数据类型— Integer(整型)、Long(长整型)、Single(单精度浮点型)、Double(双精度浮点型)和 Currency(货币型)。与 Variant 类型相比,Numeric 类型占用的存储空间通常要少。
- 如果知道变量总是存放整数(如 12 )而不是带小数点的数字(如 3.57),就应当将它声明为 Integer 类型或 Long 类型。整数的运算速度较快,而且比其它数据类型占据的内存要少。
Byte[ ]
- 如果变量包含二进制数,则将它声明为 Byte 数据类型的数组。在转换格式期间用 Byte 变量存储二进制数据就可保留数据。当 String 变量在 ANSI 和 Unicode 格式间进行转换时,变量中的任何二进制数据都会遭到破坏。在下列任何一种情况下,Visual Basic 都会自动在 ANSI 和 Unicode 之间进行转换:
- 读文件时
- 写文件时
- 调用 DLL 时
- 调用对象的方法和属性时
- 除一元减法外,所有可对整数进行操作的运算符均可操作 Byte 数据类型。因为 Byte 是从 0 - 255 的无符号类型,所以不能表示负数。因此,在进行一元减法运算时,Visual Basic 首先将 Byte 转换为符号整数。
- 所有数值变量都可相互赋值,也可对 Variant 类型变量赋值。 在将浮点数赋予整数之前, Visual Basic要将浮点数的小数部分四舍五入,而不是将小数部分去掉。
String[ ]
- 如果变量总是包含字符串而从不包含数值,就可将其声明为 String 类型。
Private S As String
- 然后可将字符串赋予这个变量,并用字符串函数对它进行操作。
S = "Database" S = Left (S,4)
- 按照缺省规定,String 变量或参数是一个可变长度的字符串,随着对字符串赋予新数据,它的长度可增可减。 也可以声明字符串具有固定长度。可用以下语法声明一个定长字符串:
String * size
- 为了声明一个长度为 50 字符的字符串,可用下列语句:
Dim EmpName As String * 50
- 如果赋予字符串的字符少于 50 个,则用空格将 EmpName 的不足部分填满。如果赋予字符串的长度太长,已不能成为定长字符串,则 Visual Basic 会直接截去超出部分的字符。
- 因为定长字符串用空格填充尾部多余的空间,所以在处理定长字符串时可发现,删除空格的 Trim 和 RTrim 函数是很有用的。
- 可将标准模块中的定长字符串声明为 Public 或 Private。在窗体和类模块中,必须将定长字符串声明为 Private。
Boolean[ ]
- 若变量的值只是“true/false”、“yes/no”、“on/off”信息,则可将它声明为 Boolean 类型。Boolean 的缺省值为 False。在下面的例子中,blnRunning 是 Boolean 变量,存储简单的 yes/no 设置。
Dim blnRunning As Boolean If Recorder.Direction = 1 Then blnRunning = True End if
Date[ ]
- Date 和 Time 值既可包含在特定的 Date 数据类型中,又可包含在 Variant 变量中。一般的 Date 特性适用于这两种类型。
- 当其它数值数据类型转换为 Date 时,小数点左边的值表示 Date 信息,小数点右边的值则代表 Time。午夜为 0,正午为 0.5。负数表示公元 1899 年 12 月 31 日之前的 Date。
Object[ ]
- Object 变量作为 32 位(4 个字节)地址来存储,该地址可引用应用程序中或某些其它应用程序中的对象。可以随后(用 Set 语句)指定一个被声明为 Object 的变量去引用应用程序所识别的任何实际对象。
Dim objDb As Object Set objDb = OpenDatabase ("c:\Vb5\Biblio.mdb")
- 在声明对象变量时,请试用特定的类,而不用一般的 Object(例如用 TextBox 而不用 Control,或者象上面的例子那样,用 Database 取代 Object)。运行应用程序之前,Visual Basic 可以决定引用特定类型对象的属性和方法。因此,应用程序在运行时速度会更快。在“对象浏览器”中列举了特定的类。
- 当使用其它应用程序的对象,并在“对象浏览器”中的“类”列表中列举对象时,不要用 Variant 或一般的 Object,而应声明对象。这样可确保 Visual Basic 能够识别引用的特定类型对象,在运行时解决引用问题。
Variant[ ]
- Variant 变量能够存储所有系统定义类型的数据。如果把它们赋予 Variant 变量,则不必在这些数据的类型间进行转换; Visual Basic 会自动完成任何必要的转换。例如:
Dim SomeValue '缺省为 Variant。 SomeValue = "17" 'SomeValue包含 "17"(双字符的串)。 SomeValue = SomeValue - 15 '现在, SomeValue 包含数值 2。 SomeValue = "U" & SomeValue '现在, SomeValue 包含 "U2" (双字符的串)。
- 不必过多关注 Variant 变量中数据的类型就可对 Variant 变量进行操作,但须避免落入陷阱。
- 如果对 Variant 变量进行数学运算或函数运算,则 Variant 必包含某个数。
- 如果正在连接两个字符串,则用 " & " 操作符而不用 " + " 操作符。
- 除了可以像其它标准数据类型一样操作外,Variants 还包含三种特定值:Empty,Null 和 Error。
- 有时需要知道是否已将一个值赋予所创建的变量。在赋值之前,Variant 变量具有值 Empty。值 Empty 是异于0、零长度字符串 ("") 或 Null 值的特定值。可用 IsEmpty 函数测试 Empty 值:
If IsEmpty (Z) Then Z = 0
- 当 Variant 变量包含 Empty 值时,可在表达式中使用它;将其作为 0 或零长度字符串来处理,这要根据表达式来定。
- 只要将任何值(包括 0、零长度字符串或 Null)赋予 Variant 变量,Empty 值就会消失。而将关键字 Empty 赋予 Variant 变量,就可将 Variant 变量恢复为 Empty。
Null和Error值[ ]
- Variant 数据类型还可包含一特定值:Null。
- Null通常用于数据库应用程序,表示未知数据或丢失的数据。 由于在数据库中使用 Null 方法,Null 具有某些唯一的特性:
- 对包含 Null 的表达式,计算结果总是 Null。于是说 Null 通过表达式“传播”;如果表达式的部分之值为 Null,那么整个表达式的值也为 Null。
- 将 Null 值、含 Null 的 Variant 变量或计算结果为 Null 的表达式作为参数传递给大多数函数,将会使函数返回 Null。
- Null 值经由返回 Variant 数据类型的内在函数传播。
- 也可用 Null 关键字指定 Null 值。
Z = Null
- 也可用 IsNull 函数测试 Variant 变量是否包含 Null 值。
If IsNull (X) And IsNull (Y) Then Z = Null Else Z = 0 End If
- 如果将 Null 值赋予 Variant 以外的任何其它类型变量,则将出现可以捕获的错误。而将 Null 值赋予 Variant 则不会发生错误,Null 将通过包含 Variant 变量的表达式传播(尽管 Null 并不通过某些函数来传播)。可以从任何具有 Variant 返回值的函数过程返回 Null。
- 在 Variant 中,Error 是特定值,指出已发生的过程中的错误状态。但是,与其它类型错误不同,这里并未发生正常的应用程序级的错误处理。因此,程序员或应用程序本身可根据 Error 值进行取舍。利用 CVErr 函数将实数转换成错误值就可建立 Error 值。
VB中的数据类型[ ]
- Byte 1 个字节 0 到 255
- Boolean 2 个字节 True 或 False
- Integer 2 个字节 -32,768 到 32,767
- 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.79769313486232E308 到-4.94065645841247E-324;正数时从4.94065645841247E-324 到 1.79769313486232E308
- 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,而小数点右边有 28 位数时为 +/-7.9228162514264337593543950335;最小的非零值为 +/-0.0000000000000000000000000001
- Date 8 个字节 100 年 1 月 1 日 到 9999 年 12 月 31 日
- Object 4 个字节 任何 Object 引用
- String(变长) 10 字节加字符串长度 0 到大约 20 亿
- String(定长) 字符串长度 1 到大约 65,400
- Variant(数字) 16 个字节 任何数字值,最大可达 Double 的范围
- Variant(字符) 22 个字节加字符串长度 与变长 String 有相同的范围
- 用户自定义(利用 Type) 所有元素所需数目 每个元素的范围与它本身的数据类型的范围相同。
数据类型转换[ ]
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
在个编程语言中,所表达的数据类型转换方式各有不同,例如,在java中,数据类型转换是这样来描述的:
public class Base{ public static final String FOO = "foo"; public static void main(String[] args){ Base b = new Base(); Sub s = new Sub(); System.out.print(((Base)s).FOO); } } class Sub extends Base{public static final String FOO = "bar";}