VB.NET学习笔记:数据类型——概述、变量

先来个自编小笑话:打酒
顾客:小二,打酒!
小二:额……花篮装酒恐怕不妥吧!
噔、噔、噔……
顾客:小二,打酒!
小二:扛这么大个酒缸,真是辛苦你了,我们店满100斤可以送货上门的!
顾客:打酒一斤!
小二:汗……谁都不扶,就扶你了!
装什么样的物品用什么样的容器,而且还要合适才好!编程也是一样,会遇到处理数字、字符等数据类型,我们也应该找对“容器”才好。
一、常用的数据类型
1、对象类型
.net提供数千个类,通过类可以创建的对象。
System.Object是.net中每个类型的基类(包括值类型和引用类型),本质上,每个变量都是一个对象,都可作对象处理。所以,任意变量都可转换为Object。
ToString方法可获得任意对象的字符串。这个方法是默认实现方式,返回该对象的类型。
Object数据类型相当于VB6.0中的Variant类型。
2、数值类型
(1)、整型
16位:有符号——Short、Int16;无符号——UInt16、Ushort
为了兼容旧的VB6.0,VB.NET新增了Short数据类型,相当于VB6.0的Integer类型。
范围:-32768-32768,说是占两个字节,但有进为了优化速度,也可能占4字节,所以建议不用该数据类型,而直接改用32位数据类型。
32位:有符号——Integer、 Int32;无符号——UInteger、UInt32
范围:-2147483648-2147483648,占4字节,旧的VB6.0中的Integer是16位的,在VB.NET中是32位,也许以后可能还会升级为64位,故,为了解决迁移系统问题可使用用Int32, 如果为了脱离与底层的实现方式无关,可用Integer。
64位:有符号——Long、Int64;无符号——ULong、UInt64
范围:-9223372036854775808-9223372036854775808,占8字节。
**注意:**前面加U的为无符号类型,取值为非负,范围涨一倍。范围扩大并不是用无符号类型的主要原因,只是为了表征某些特征,比如UInt32和32位机上的指针地址有相同特征。
Byte类型
在VB.NET中,Byte值类型接受的是数字值,范围在0-255之间,与ASCII字符集的范围精确匹配。
(2)、小数
A、单精度Single和双精度Double
单精度尾数6位,双精度尾数14,各表达的精度和范围不一样。每种类型后面都可以用MaxValue和MinValue。
B、Decimal
Single和Double虽然表达的范围大,但它们的精度不够,增加Decimal,可达28位有效数值。
注意:旧的VB6.0中的Currency数据类型已经停用。
3、字符类型
字符数据类型,用以处理可打印和显示的字符。字符数据类型包括Char类型和String类型。
(1)、Char类型
因VB.net下默认的是Unicode字符(统一的字符编码标准,采用双字节对字符进行编码,中文就是Unicode字符,而英文则是非Unicode字符)。故Char为单个两字节(16位)Unicode字符,不仅英文,汉字亦可表达。
Char类型也称为单个字符数据类型,也就是说这种变量只接受一个字符的数据。
声明Char类型字符值的方式:

dim chr as char = "a"c  '在字面量字符串的后面加上字符c
dim chr as char =chr(97)
dim chr as char =chrw(97)

chr和chrw的区别是有效输入值的范围不同。
如果需要将字符转变为字符串,以用于ASCII接口,最好使用Byte数组,运行库知道,不需要把Byte数组从Unicode转换为ASCII。
char是无符号,负数则是错误的,同时,char不能直接与数值型进行转换。在VB.NET中,Byte值类型只接受的是数字值。为了将字母a赋予一个Byte类型变量,必须使用字符代码。使用Asc方法就可以得到这些代码。
如:dim byt as Byte = Asc("a")
(2)、 String类型
String类型(也称为字符串数据类型)存储无符号的 16 位 (2 个字节) 码位的序列,该范围从 0 到 65535 之间的值中。 每个代码点或字符代码,表示单个 Unicode 字符。 一个字符串,可包含从 0 到大约 20 亿 (2 ^31) 的 Unicode 字符。
4、日期类型
Date和DateTime都是日期类型数据,VB.NET中的Date类型支持日期和时间结构,但更多时候是使用DateTime来声明日期值。需要注意的是,VB.NET内部不再把日期值像以前的VB6.0一样存储为Double类型了,为了和VB6兼容,用ToOADate和FromOADate来支持。
5、布尔类型
Boolean 布尔数据类型(32位)只有两个值:真(True)和假(False),经常被用来表示逻辑判断的结果。
二、基本数据类型

基本类型 .NET类或结构
Byte System.Byte(结构)
Short System.Int16(结构)
Integer System.Int32(结构)
Long System.Int64(结构)
Single System.Single(结构)
Double System.Double (结构)
Decimal System.Decimal(结构)
Date System.DateTime(结构)
Boolean System.Boolean(结构)
Char System.Char(结构)
String System.String(类)

三、值类型和引用类型
值类型:基本数据类型(除String外),位于堆栈上,存储内存大小已知,故速度快。
引用类型:对象、String等,位于托管堆,大小由动态内存分配。其首地址放于栈上便于引用。
所有值类型在VB.net中都可称为结构类型。String是基本类型中唯一的引用类型。
四、变量
变量就是程序运行过程中用来存储值的容器。
1、使用变量
(1)、使用基本类型
首先,声明变量:Dim 变量名称 As 数据类型

Dim i As Integer

然后就可以给变量赋值:

i = 10

也可以再声明变量的同时给变量赋值:

Dim i As Integer = 10

也可以使用Const关键字替换Dim关键字,把变量声明为常量,声明常量的同时必须给常量赋值,如:

Public Class Form1
    '声明模块级常量
    Const maximum As Long = 459
    Public Const helpString As String = "HELP"
    Private Const startValue As Integer = 5
    Sub GetConst()
        '声明过程级常量
        Const str As String = "Hello world"
    End Sub
End Class

如果应用程序中有一个值,永远不会更改,你可以把它定义为常量,只需一次定义常量,就可以在代码中的多个地方使用它。 只是要注意,常量只能在模块或过程的级别声明,数据类型只能是基本类型,特别不能为对象。

(2)、使用对象
如果是声明的是对象变量,给变量赋值时需要利用New关键字来实例化对象。

Dim Form As System.Windows.Forms.Form
Form = New Form1

也可以把变量的声明和实例的创建组合起来,以上代码可浓缩为:

Dim Form As New Form1

还可以在声明变量的同时赋值:

Dim Form As System.Windows.Forms.Form = New Form1

在处理完对象后,可以通过取消对象的引用来销毁该对象,只需将对象引用设置为Nothing即可:

Form = Nothing

2、变量的作用域
VB.NET中的变量作用域有4种,作用域定义了每一个变量的生存期和优先级。当变量不再处于作用域时,垃圾回收器就可以回收它了。
原则:小的作用域比较大的作用域更具优先级,即两作用域重叠时,先用较小的作用域。
(1)、全局作用域 : 存在于整个程序运行期间,优先级最低。用Public关键字声明变量。
(2)、类级或模块级作用域:存在于类或模块生存期间,当类被删除时,变量也就不存在了。当与全局作用域重叠时,全局作用域变量暂时“不可见”,类级变量作用域生效。用Dim或Private声明变量。
(3)、方法作用域: 即sub,function等作用域。用Dim声明变量。
(4)、块级作用域:在某个程序语句块中声明的。比如在if…then或For …Next的语句块中声明的循环变量,出了循环块就失效。用Dim声明变量。

Public Class Form1
    Public i As Integer  '全局作用域
    Dim j As Int32  '类作用域
    '或者用Private关键字
    'Private j As Int32  '类作用域
    Private Sub a()
        Dim k As Int32 = 0 'k是方法作用域
        For n As Int32 = 0 To 10 'n是块作用域
            k += i
        Next
    End Sub
End Class

你可能感兴趣的:(VB.NET学习笔记:数据类型——概述、变量)