您好,欢迎访问三七文档
数据类型数据类型在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作。变量是用来存储值的所在处,它们有名字和数据类型。变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。在声明变量时也可指定它的数据类型。所有变量都具有数据类型,以决定能够存储哪种数据。数据类型包括原始类型、多元组、记录单元、代数数据类型、抽象数据类型、参考类型以及函数类型。定义计算机中中,以位(0或1)表示数据。数据的最小的寻址单位称为字节(通常是八位)。机器码指令处理的单位,称作字长。大部分对字长的指令解译,主要以二进制为主,如一个32位的字长,可以表示从0至2的32次方减1的无符号整数值,或者表示从负的2的32次方至2的32次方减1的有符号整数值。存在着特殊的算术指令,对字长中的位使用不同的解释,以此作为浮点数。数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。例如大胖子必须睡双人床,就给他双人床,瘦的人单人床就够了。根据缺省规定,如果在声明中没有说明数据类型,则令变量的数据类型为Variant。Variant数据类型很像一条变色龙—它可在不同场合代表不同数据类型。当指定变量为Variant变量时,不必在数据类型之间进行转换,VisualBasic会自动完成各种必要的转换。但是,如果知道变量确实总是存储特定类型的数据,并且还声明了这种特定类型的变量,则VisualBasic会以更高的效率处理这个数据。例如,存储人名的变量最好表示成String数据类型,因为名字总是由字符组成。除变量外,数据类型也用于其它场合。在给属性赋值时,这个值就有数据类型;函数的参数也有数据类型。事实上,在VisualBasic中,凡是与数据有关的东西就与数据类型有关。声明变量在使用非Variant变量之前,必须使用Private、Public、Dim或Static语句将变量声明为Astype。例如,下列语句分别声明了Integer、Double、String和Currency类型的变量:1234PrivateIAsIntegerDimAmtAsDoubleStaticYourNameAsStringPublicBillsPaidAsCurrency一个声明语句可将多个声明组合起来,请看下列语句:12PrivateIAsInteger,AmtAsDoublePrivateYourNameAsString,BillsPaidAsCurrency34PrivateTest,Amount,JAsInteger'注意,在这里Test和Amount是Variant数据类型,只有J是Integer数据类型注意如果不提供数据类型,则指定变量为缺省类型。如上例中注释已说明,如果由于其它编程语言的经验使人感到同一个声明语句中的所有变量都有相同的指定数据类型(此例中为Integer),那么,此处的结果可能会令人感到新鲜。种类数字型VisualBasic支持几种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格式间进行转换时,变量中的任何二进制数据都会遭到破坏。在下列任何一种情况下,VisualBasic都会自动在ANSI和Unicode之间进行转换。除一元减法外,所有可对整数进行操作的运算符均可操作Byte数据类型。因为Byte是从0-255的无符号类型,所以不能表示负数。因此,在进行一元减法运算时,VisualBasic首先将Byte转换为符号整数。所有数值变量都可相互赋值,也可对Variant类型变量赋值。在将浮点数赋予整数之前,VisualBasic要将浮点数的小数部分四舍五入,而不是将小数部分去掉。文本型如果变量总是包含字符串而从不包含数值,就可将其声明为String类型。1PrivateSAsString然后可将字符串赋予这个变量,并用字符串函数对它进行操作。12S=DatabaseS=Left(S,4)按照缺省规定,String变量或参数是一个可变长度的字符串,随着对字符串赋予新数据,它的长度可增可减。也可以声明字符串具有固定长度。可用以下语法声明一个定长字符串:1String*size例如,为了声明一个长度为50字符的字符串,可用下列语句:1DimEmpNameAsString*50如果赋予字符串的字符少于50个,则用空格将EmpName的不足部分填满。如果赋予字符串的长度太长,已不能成为定长字符串,则VisualBasic会直接截去超出部分的字符。因为定长字符串用空格填充尾部多余的空间,所以在处理定长字符串时可发现,删除空格的Trim和RTrim函数是很有用的。可将标准模块中的定长字符串声明为Public或Private。在窗体和类模块中,必须将定长字符串声明为Private。操作方法转换如果字符串表示数值,则可将字符串赋予数值变量。也可将数值赋予字符串变量。例如,将命令按钮、文本框和列表框放置在窗体中。在命令按钮的Click事件中输入下列代码。运行应用程序并单击命令按钮。12345678910PrivateSubCommand1_Click()DimintXAsIntegerDimstrYAsStringstrY=100.23intX=strY'将字符串传递给数值变量。List1.AddItemCos(strY)'将字符串中数值的余弦值。'添加到列表框中。strY=Cos(strY)'将余弦值传递给字符串变量。Text1.Text=strY'在文本框中显示字符串。EndSubVisualBasic会自动强制变量为适当的数据类型。在转换字符串和数值时要小心;如果传送字符串中的值不是数值,则在运行时会出错。逻辑型若变量的值只是“true/false”、“yes/no”、“on/off”信息,则可将它声明为Boolean类型。Boolean的缺省值为False。在下面的例子中,blnRunning是Boolean变量,存储简单的yes/no设置。12345DimblnRunningAsBoolean'查看磁带是否在转。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的变量去引用应用程序所识别的任何实际对象。12DimobjDbAsObjectSetobjDb=OpenDatabase(c:\Vb5\Biblio.mdb)在声明对象变量时,请试用特定的类,而不用一般的Object(例如用TextBox而不用Control,或者象上面的例子那样,用Database取代Object)。运行应用程序之前,VisualBasic可以决定引用特定类型对象的属性和方法。因此,应用程序在运行时速度会更快。在“对象浏览器”中列举了特定的类。当使用其它应用程序的对象,并在“对象浏览器”中的“类”列表中列举对象时,不要用Variant或一般的Object,而应声明对象。这样可确保VisualBasic能够识别引用的特定类型对象,在运行时解决引用问题。详细信息关于创建和指定对象以及对象变量的更详细信息,请参阅本章后面的“创建对象”部分。VisualBasic提供了几种转换函数,可用来将值转换成特定数据类型。例如,用CCur函数将值转换成Currency类型:PayPerWeek=CCur(hours*hourlyPay)转换函数将表达式转换成CboolBooleanCbyteByteCcurCurrencyCdateDateCDblDoubleCintIntegerCLngLongCSngSingleCStrStringCvarVariantCVErrError对目标数据类型,传递到转换函数的值必须是有效的,否则会发生错误。例如,如果想把Long型数转换成Integer型数,那么,Long型数必须在Integer数据类型的有效范围之内。相关信息请查阅本词条后面的数据类型概述变体型概述Variant变量能够存储所有系统定义类型的数据。如果把它们赋予Variant变量,则不必在这些数据的类型间进行转换;VisualBasic会自动完成任何必要的转换。例如:1234DimSomeValue'缺省为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值:1IfIsEmpty(Z)ThenZ=0当Variant变量包含Empty值时,可在表达式中使用它;将其作为0或零长度字符串来处理,这要根据表达式来定。只要将任何值(包括0、零长度字符串或Null)赋予Variant变量,Empty值就会消失。而将关键
本文标题:数据类型
链接地址:https://www.777doc.com/doc-7051071 .html