VB编程基础教程7–数据类型
变量是用来存储值的所在处;它们有名字和数据类型。变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。在声明变量时也可指定它的数据类型。所有变量都具有数据类型,以决定能够存储哪种数据。
根据缺省规定,如果在声明中没有说明数据类型,则令变量的数据类型为 variant。variant 数据类型很象一条变色龙— 它可在不同场合代表不同数据类型。当指定变量为 variant 变量时,不必在数据类型之间进行转换,visual basic 会自动完成各种必要的转换。
但是,如果知道变量确实总是存储特定类型的数据,并且还声明了这种特定类型的变量,则 visual basic 会以更高的效率处理这个数据。例如,存储人名的变量最好表示成 string 数据类型,因为名字总是由字符组成。
除变量外,数据类型也用于其它场合。在给属性赋值时,这个值就有数据类型;函数的参数也有数据类型。事实上,在 visual basic 中,凡是与数据有关的东西就与数据类型有关。
也可声明任何基本类型的数组。
详细信息 关于更详细信息,请参阅本章后面的“数组”部分。在“性能和兼容性的设计”中还将讨论通过选择数据类型来提高应用程序的性能。
声明带数据类型的变量
在使用非 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
一个声明语句可将多个声明组合起来,请看下列语句:
private i as integer,amt as double
private yourname as string,billspaid as currency
private test,amount,j as integer
注意 如果不提供数据类型,则指定变量为缺省类型。在上例中,变量 test 和 amount 是 variant 数据类型。如果由于其它编程语言的经验使人感到同一个声明语句中的所有变量都有相同的指定数据类型(此例中为 integer),那么,此处的结果可能会令人感到新鲜。
numeric 数据类型
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 数据类型的数组。(本章后面的“数组”中将讨论数组)。在转换格式期间用 byte 变量存储二进制数据就可保留数据。当 string 变量在 ansi 和 unicode 格式间进行转换时,变量中的任何二进制数据都会遭到破坏。在下列任何一种情况下,visual basic 都会自动在 ansi 和 unicode 之间进行转换:
读文件时
写文件时
调用 dll 时
调用对象的方法和属性时
除一元减法外,所有可对整数进行操作的运算符均可操作 byte 数据类型。因为 byte 是从 0 – 255 的无符号类型,所以不能表示负数。因此,在进行一元减法运算时,visual basic 首先将 byte 转换为符号整数。
所有数值变量都可相互赋值,也可对 variant 类型变量赋值。 在将浮点数赋予整数之前, visual basic要将浮点数的小数部分四舍五入,而不是将小数部分去掉。
详细信息 关于 unicode 和 ansi 转换的详细信息,请参阅“国际化”。
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。