项目二 数据类型及运算符
数据是程序的必要元素,也是程序要处理的对象。数据类型是区别不同的数据依据之一。在计算机中,数据是存储在内存变量中的,而数据类型不仅决定了程序中可使用的值或数据变量的种类,而且决定了如何存储该数据变量。为什么会有不同的数据类型?设有品名、单价、数量三个数据变量,单价乘以数量可以计算出物品的价格,而品名是一个名称,只是用于区别不同的物品,却不能对名称进行算术运算。可见,指定变量的数据类型就能确定变量的使用方式和存储方式。在程序中,无论是常量还是变量,都有自己的数据类型。
相关语法及设计理念
一、数据类型
在Visual Basic.NET中,数据类型分为两种:值类型和引用类型。值类型变量直接存储数据,也是Visual Basic.NET的标准数据类型;而引用类型的变量存储的是指向存储数据的内存地址的指针,也是Visual Basic.NET的高级数据类型。
值类型包括:所有数值数据类型(如整数、小数)、Boolean、Char和Date、所有结构(即其成员是引用类型)、枚举。
引用类型包括:String(用于处理文本)、所有数组(即使其元素是值类型)、类(如Form)、委托。
例如,以下语句中:
Dim i As Integer = 0 Dim kcm As String = "Visual Basic"
变量i的数据类型是整型,是值类型,存放的值为1;变量kcm的数据类型是字符串,是引用类型,存放的是字符串“Visual Basic”所在的地址。两者的区别如图2-1所示。Visual Basic 2008中的标准数据类型及其属性见表2-1。
图2-1 值类型与引用类型的区别
表2-1 Visual Basic 2008标准数据类型
注意:Visual Basic.NET中每种数据类型都是类,可以通过其MaxValue和MinValue属性测试数据类型的有效范围。例如,利用Interger.MaxValue可以得到Interger类型数据的最大值。
标准数据类型是系统定义的数据类型,标准数据类型有以下几种。
1.数值数据类型
数值数据类型用来处理能够区分大小的数据量,可分为整数类型和非整数类型两大类,也就是说,有小数点的数和没有小数点的数是不一样的。
(1)整数数值类型
整数类型分有符号整数和无符号整数。有符号整数包括:Short、Integer和Long,无符号整数是Byte。
一般使用Integer类型存储整数,当程序中需要处理数值较小或较大的整数时,可使用Short或Long。
整数的表示形式为:±n[X],其中:n 是十进制整数,X 为类型符号,可选值有S(表示Short)、I(表示Integer)和L(表示Long),Byte没有对应的类型符号。如果没有类型符号,表示Integer类型整数,如-10S,100L,1000。
(2)非整数数值类型
非整数类型是表示同时带有整数部分和小数部分的数字的类型,包括:Single、Double和Decimal,它们都是有符号类型。其中Single和Double为浮点数,Decimal为定点数。
Decimal数据类型主要适用于数据范围大且不允许有舍入误差的数值处理。表示形式为数字后面加类型符号D。例如,123456789012345D、1.2345678901234567D。
浮点数类型的精度比Decimal类型小,但表示的数据范围更大。Single、Double类型,使用浮点数进行计算时可能会出现舍入误差。Single类型可以精确到7位十进制数,Double类型可以精确到15或16位十进制数,即有效数字。
Double数据类型的表示形式有:
±n.n ±nE±m ±n.nE±m
分别用小数形式和指数形式表示,其中n和m为十进制数字,E表示指数符号。也可以在后面加上类型符号“R”或“#”。例如,12.345和0.12345E+2(表示0.12345×102)表示值相同的Double数据类型浮点数。
如果要表示Single数据类型浮点数,则要在常数后面加上类型符号“F”或“!”。例如,12.345!、12.345F、0.12345E+2F、0.12345E+2!等。
每一种数据类型都有相应的表示范围。在运算过程中,如果数据超出范围,就会产生溢出,中断程序运行。此时,应使用表示数据范围更大的数据类型,如Long、Single、Double等。
2.字符数据类型
字符数据类型用来处理Unicode字符,每个字符占两个字节,包括两种类型:Char和String。
Char类型用来存储单个字符或汉字,占两个字符。例如,"A"、"0"、"数"等。
String类型是任意一系列文本字符,例如字母、数字、特殊字符和空格。字符串可以是人可读懂的词组或句子,例如"The quick brown fox jumps over the lazy dog"、"Visual Basic"、"2010",或者是明显无法识别的组合,例如"@#fTWRE^3-35Gert"。
字符类型数据用一对西文双引号“"”括起来表示,""表示空字符串," "表示有一个空格字符。如表示的字符串中包含双引号“"”,则用连续的两个双引号表示。如:
则变量s的值为字符串:xyz"12。
s = "xyz""12"
3.逻辑数据类型
Boolean类型是逻辑类型,又称布尔类型,专门用来处理True和False这两个逻辑量。如果表示的数据仅包含一对互斥的信息(如真/假、开/关、是/否等),则应将其定义为Boolean类型。例如,以下程序段判断m是否为偶数,并将结果保存在flag变量中。
Dim m As Integer,flag As Boolean'定义flag为布尔型变量 m = Val(TextBox1.Text) If m Mod 2 = 0 Then '判断m除2的余数是否为0,余数为0即为偶数 flag = True Else flag = False End If Label2.Text = flag
4.日期时间类型
Date类型是日期时间类型,包含日期值和时间值,表示从0001年1月1日凌晨0:00:00到9999年12月31日晚上11:59:59的时间。用一对“#”括起来,日期的格式为m/d/yyyy,例如,#8/31/2009#。时间值为12小时或24小时制,例如,#1:15:30 PM#或#13:15:30#。但是,如果没有指定分或秒,则必须指定AM或PM。例如,#8/31/2009 1:30:00 PM#是一个合法的日期时间值。
5.对象类型
Object类型以地址形式存储,可以指向任意数据类型的数据,包括应用程序中任意对象实例。因此,可以将任意类型的数据赋值给Object类型的变量。
注意:要存储文本数据,应使用String类型;要存储不包含小数点且在-32768到32767之间的数字,应使用Short类型,超过这个范围,使用Integer或Long类型;要存储包舍小数点的数字,使用Single类型。对于包含小数点的数据,Single类型几乎够用,除非是极其复杂的数学程序或需要存储非常大的数的情况下,可使用Double类型;要存储金额,使用Decimal数据类型。不同的数据类型占用不同的内存空间,为节省系统资源,最好使用占用内存最少,但足以存储所有可能值的数据类型。