-
vb中怎么定义java_变量的声明和作用域——VB
2021-03-14 20:49:23VB中变量可以分为3类:局部(Local)变量、模块(Module)变量及全局(Public)变量,其中模块变量包括窗体模块变量和标准模块变量。各变量位于不同的层次。局部变量过程级变量只有在声明它们的过程中才能被识别,它们又...变量的作用域指的是变量的有效范围。为了能正确地使用变量的值,应当明确可以在程序的什么地方访问该变量。VB中变量可以分为3类:局部(Local)变量、模块(Module)变量及全局(Public)变量,其中模块变量包括窗体模块变量和标准模块变量。各变量位于不同的层次。
局部变量
过程级变量只有在声明它们的过程中才能被识别,它们又称为局部变量。
用Dim或者Static关键字来声明它们,两者的区别在于:在整个应用程序运行时,用Static声明的局部变量中的值一直存在,而用Dim声明的变量只在过程执行期间才存在。
对任何临时计算来说,局部变量是最佳选择。例如,可以建立十来个不同的过程,每个过程都包含称作intTemp的变量(同一个变量名在不同的过程中意义可能不同)。只要每个intTemp都声明为局部变量,那么每个过程只识别它自己的intTemp版本。任何一个过程都能够改变它自己的局部的intTemp变量的值,而不会影响别的过程中的intTemp变量。
模块变量
按照缺省规定,模块级变量对该模块的所有过程都可用,但对其它模块的代码不可用。可在模块顶部的声明段用Private或Dim关键字声明模块级变量,从而建立模块级变量。例如:
Private intTemp As Integer
在模块级,Private和Dim之间没有什么区别,但Private更好些,因为很容易把它和Public区别开来,使代码更容易理解。
全局变量
为了使模块级的变量在其它模块中也有效,用Public关键字声明变量。公用变量中的值可用于应用程序的所有过程。和所有模块级变量一样,也在模块顶部的声明段来声明公用变量。例如
Public intTemp As Integer
注意:不能在过程中声明公用变量,只能在模块的声明段中声明公用变量。
总结以上可知:声明语句有如下四种格式,这四种语句创建了不同特性的变量,下面来作详细的介绍:
(I)Dim语句,其格式为:
Dim<变量名>[As<数据类型>]
程序运行时,上述声明在内存中为变量分配空间,并使Visual Basic了解随后要处理数据的数据类型。
Dim语句用于在标准模块(Module)、窗体模块(Form)或过程(Procedure)中定义变量或数组
用Dim语句在窗体的过程中声明的变量称为局部变量,其作用域仅局限在本过程内部,过程一旦执行完毕,其值也就消失了。
例如
Dim Number As Integer'声明Number为Integer(整型)变量。
Dim I As Integer,j As Integer,k As Integer'同时声明为整型变量。
Dim AnyValue,MyValue'AnyValue和MyValue按缺省情况被声明为Variant类型,同时值被设为Empty(空)。
Dim AnotherVar, Choice As Boolean, BirthDate As Date'在一行中声明多种类型变量,AnotherVar为Variant类型,因为它的类型被省略了,Choice为布尔型变量,BirthDate为日期型变量。
(2)Private语句.其格式为:
Private<变量名>[As<数据类型>]
如果要在一个窗体模块的所有过程中共享同一个变量,则应在这个窗体模块的声明段用Private语句进行声明.这种变量称为模块级变量,其作用域为整个窗体模块。这就好比是您家里的电话号码,它在您所在的城市是通用的,但出了这个范围就不能单独使用了。
(3)Public语句,其格式为:
Public<变量名>[As<数据类型>
]
用来在标准模块中定义全局变量或数组。如果在标准模块的声明段中用Public关键字来声明模块级变量,那么这个变量的作用域是整个工程,即它会在整个工程的所有模块中有效,这种变量称为全局变量,也称公用变量。这就好比是加了邮政区号的电话号码,在全国范围内通用。
(4)static语句.其格式为:
static<变量名>[As<数据类型>·
局部变量在过程执行结束后其值不能被保留下来,在每一次过程重新执行时,变量会被重新初始化。如果希望在该过程结束之后,还能继续保持过程中局部变量的值,就应该用static关键字将这个变量声明为静态变量。这样,即使过程结束,该静态变量的值也仍然保留着。
例如我们可以为一个窗体编写下面这样一程序,可以对用户在窗体上单击的次数计数并用显示出来。
Private Sub Form_click()
Static
I As IntegerI = I + 1Label1.Caption = IEnd Sub
再如:
Private Sub Command1_Click()
Static IntCount As IntegerIntCount = IntCount + 1Select Case IntCountCase 1Command1.Caption = "春眠不觉晓"Case 2Command1.Caption = "处处闻啼鸟"Case 3Command1.Caption = "夜来风雨声"Case ElseCommand1.Caption = "花落知多少"IntCount = 0End Select
End Sub
将Static换成Dim,运行一下,连续单击窗体,两者结果的不同显而易见。
注意:就像在过程中不能使用Public和Private关键字一样,在模块的声明段中不能使用static关键字,会报错。
定义完变量,初值的问题:
整数:0
浮点数:0.0
字符串:""
Variant:Empty(保留字,关键字)不同与null,0,Nothing
判断它有没有赋值,就看它的值是不是empty
-
vb 定义全局变量_VB常量与变量的正确使用
2020-12-11 10:58:25变量和常量是VB语句的重要部分,也是VB编程的基础知识内容。今天我们就共同来学习一下这方面的内容。VB中的变量与常量变量是指程序在运行过程中其值可以改变的量。如何声明变量1.隐式声明:只是变量,不经声明.直接...变量和常量是VB语句的重要部分,也是VB编程的基础知识内容。
今天我们就共同来学习一下这方面的内容。
VB中的变量与常量
变量
是指程序在运行过程中其值可以改变的量。
如何声明变量
1.隐式声明:只是变量,不经声明.直接使用
2.显示声明:变量声明后再使用的方式成为显式声明
强制声明的两种方式
(1)、工具-选项-编辑器-勾选"要求变量声明"-重新启动VB;
(2)、窗体对象列表选择(通用),然后再通用区加上声明语句:Option Explicit
使用DIM语句声明变量(也可以用来声明数组)
1.声明一个变量 Dim Name As String
2.同时声明多个变量 Dim m As Integer,N As Integer
3.声明多个不同类型的变量 Dim a,b As Boolean,c As Date
全局变量的声明:
在标准模块的声明部分,使用关键字Public或者Global声明,可以被工程中的任一窗体,任一模块中的任一过程或函数使用。
全局变量的使用过程中一定要特别注意,因为每一个程序模块都可能改变它的值,所以如果控制不当,极易出现错误。
常量
常量指在程序运行过程中,其值不会发生改变的量。
为什么要定义常量?
在编写程序时,我们常会遇到一些固定不变的数值,利用常量可以减少输入错误,简化固定数值的修改过程,增强程序的可读性。
比如求圆面积和周长时,定义 Const pi=3.14
VB 中的常量分为两类
a.系统内部常量
是为应用程序和控件提供的
如:VbRed(红色)、 VbWhite(白色)
b.符号常量(自定义常量)
Public是公有声明:
特点:
1、使用Public 声明的常量可在整个应用程序中使用;
2、必须在标准模块的声明区中使用;
3、在窗体模块或类模块中不能声明Public常量。
Private是私有声明:
1、Private可用在模块级声明常量,
2、此常量只准许在模块级使用;
3、Private关键字不能在过程声明变量时使用。
缺省为Public
说明:
1.用Const声明的变量在程序运行的过程中是不能被重新赋值的;
2.在常量声明的同时要对常量赋值;
3.可以在声明常量时指定类型;
4.在使用一常量为另一常量初始化时注意循环引用时会出错。
VB变量类型转换规则
VB程序语言允许不同类型的变量之间相互赋值,也允许把不同类型的值赋予某种类型的变量,VB程序会自动将所赋予的值转换为被赋值的变量的类型。
数值型变量的赋值
数据型变量之间可以相互赋值。
浮点数转换为整型数时,小数部分“四舍五入”为整数(其中0.5要向最近的偶数靠拢)。
当给一个变量赋予超出它表示范围的值时,会导致“溢出”错误。
例如:
(1) intN1=45631234 '(超出整型变量范围,系统提示溢出错误)
(2) bytN1=-12 '(超出表示范围,报溢出错误)
字符串变量
如果字符串变量中存贮的是数值信息,则可以将其赋予数值型变量。数值型变量的值也可以赋予字符串变量。
(1) strFirst=“1234”
intFirst=strFirst '(intFirst的值为1234)
(2) intSecond=32.21
strSecond=intSecond '(strSecond的值为“32”)
(3) strThird=“abc123”
intThird=strThird '(出错)
逻辑型变量
逻辑变量的值赋给数值型变量,False转换为0,True转换为-1。
数值型变量的值赋给逻辑变量,0转换为False,其它值转换为True。
逻辑型变量的值赋给字符串,True和False分别转换为“True”和”False”。
日期型变量
日期型变量转换为字符串时,按照日期的短格式字符串。
例如:
dtmStart=#2/1/99 8:20:00#
str1=dtmStart
'dtmStart值为“99-2-1 8:20:00”
表示有效时间的字符串可以赋值给日期时间变量。
例如:dtmEnd=“13:23:34” '则 dtmEnd的值为 #13:23:34#
日期时间型变量赋给数值型变量时,日期部分转换为数值的整数部分,值为此日期距1899年12月30日的天数;时间部分转换为小数部分,从零时到该时间占一整天的比例,12:00:00转为0.5。
例:
dtm3=#3/18/1999 6:00:00#
sng2=dtm 'sng2的值为“36237.25”
大家在学习中有不懂的问题,可以添加小编微信号:vbyjk521,验证消息填写“VB学习"。长按上图,关注跟我学VB公众平台
-
深入了解VB中的变量和指针
2013-03-12 10:05:43前言:我们都知道,在VB中,可以使用VarPtr、StrPtr和ObjPtr来获得变量的地址,它们之间有什么区别和联系呢?许多资深的VB人员告诉我们,最好将API函数声明中ByVal lpstr As String改为ByVal lpStr As Long,这又是...前言:我们都知道,在VB中,可以使用VarPtr、StrPtr和ObjPtr来获得变量的地址,它们之间有什么区别和联系呢?许多资深的VB人员告诉我们,最好将API函数声明中ByVal lpstr As String改为ByVal lpStr As Long,这又是为什么呢?如何正确地利用这些函数向API传递指针呢?
首先,我们来了解一下VB中的变量及其定义。
也许你会说我多此一举,如此简单的问题,还需要我来解释吗?
其实不然。
现在假设有以下语句:
Dim i As Long
它表示什么呢?它表示我们定义了一个名称为a且类型为Long的变量。然而对于内存来说,即没有名称,也没有类型,只有用数字数字表示的地址和连续所占用地址的数量。由于Long为4个Byte大小,因此,我们可以把这条语句看作程序对系统的内存管理器说,俺想在地址a上使用大小为4Byte这一段连续地址,然后准备在这段地址里放点东西,当然,俺的东西不会超过4Byte的。
再看一下这条语句:
Dim s As String
它又表示什么呢?直白地说,它表示我们定义了一个名称为s且类型为String的变量。现在麻烦的是,String的大小是不确定的。如果程序还像上一条语句一样直接告诉系统的内存管理器说:喂,俺想在地址s上放点东西。内存管理器听到后说:又来放东西啊,多大啊?程序说:不知道。内存管理器说:不知道你来干啥啊,我乍给你准备啊?简直是胡闹,一边去,其他人正等呢。这下程序犯了愁,问题不解决,没法给设计人员交代啊。想了想,又回去跟内存管理器说:这样吧,我在地址s上做一个标志吧,只有4Byte大小(32位操作系统的最大寻址能力),到时东西带来了,再将这个标志改为东西实际存放的地址,好吗?内存管理器说:这就对啦,别忘了把东西带来啊。
通过上述两条语句,我们可以了解到,变量定义实际上表示两个含义,一个是变量名称,一个是变量的值,它们都会占用空间的,只不过有些变量由于个子比较小,所以变量名称和变量值放在一块就行,如变量i,而有些变量由于块头比较大或不确定,需要分别进行存放,如变量s。
现在,我们站在内存管理器的角度来理解一下,假设变量a的地址为&H0013FBD0,a的值为100,那么很显然,从地址&H0013FBD0开始到&H0013FBD3这4个byte的空间里,存放的是100;而假设变量s的地址为&H0013FC50,s的值为“100”,那么,从地址&H0013FC50到&H0013FC53这4个Byte的空间里,存放的是指向实际存放“100”的值的地址。
摘自:深入了解VB中的变量和指针
相关文章参考:
※VB中的指针技术
-
深入了解VB中的变量和指针(一)
2009-05-14 19:56:00前言:我们都知道,在VB中,可以使用VarPtr、StrPtr和ObjPtr来获得变量的地址,它们之间有什么区别和联系呢?许多资深的VB人员告诉我们,最好将API函数声明中ByVal lpstr As String改为ByVal lpStr As Long,这又是...前言:我们都知道,在VB中,可以使用VarPtr、StrPtr和ObjPtr来获得变量的地址,它们之间有什么区别和联系呢?许多资深的VB人员告诉我们,最好将API函数声明中ByVal lpstr As String改为ByVal lpStr As Long,这又是为什么呢?如何正确地利用这些函数向API传递指针呢?
首先,我们来了解一下VB中的变量及其定义。
也许你会说我多此一举,如此简单的问题,还需要我来解释吗?
其实不然。
现在假设有以下语句:
Dim i As Long
它表示什么呢?它表示我们定义了一个名称为a且类型为Long的变量。然而对于内存来说,即没有名称,也没有类型,只有用数字数字表示的地址和连续所占用地址的数量。由于Long为4个Byte大小,因此,我们可以把这条语句看作程序对系统的内存管理器说,俺想在地址a上使用大小为4Byte这一段连续地址,然后准备在这段地址里放点东西,当然,俺的东西不会超过4Byte的。
再看一下这条语句:
Dim s As String
它又表示什么呢?直白地说,它表示我们定义了一个名称为s且类型为String的变量。现在麻烦的是,String的大小是不确定的。如果程序还像上一条语句一样直接告诉系统的内存管理器说:喂,俺想在地址s上放点东西。内存管理器听到后说:又来放东西啊,多大啊?程序说:不知道。内存管理器说:不知道你来干啥啊,我乍给你准备啊?简直是胡闹,一边去,其他人正等呢。这下程序犯了愁,问题不解决,没法给设计人员交代啊。想了想,又回去跟内存管理器说:这样吧,我在地址s上做一个标志吧,只有4Byte大小(32位操作系统的最大寻址能力),到时东西带来了,再将这个标志改为东西实际存放的地址,好吗?内存管理器说:这就对啦,别忘了把东西带来啊。
通过上述两条语句,我们可以了解到,变量定义实际上表示两个含义,一个是变量名称,一个是变量的值,它们都会占用空间的,只不过有些变量由于个子比较小,所以变量名称和变量值放在一块就行,如变量i,而有些变量由于块头比较大或不确定,需要分别进行存放,如变量s。
现在,我们站在内存管理器的角度来理解一下,假设变量a的地址为&H0013FBD0,a的值为100,那么很显然,从地址&H0013FBD0开始到&H0013FBD3这4个byte的空间里,存放的是100;而假设变量s的地址为&H0013FC50,s的值为“100”,那么,从地址&H0013FC50到&H0013FC53这4个Byte的空间里,存放的是指向实际存放“100”的值的地址。 -
vb.net 数组定义详解
2017-08-10 16:53:13数组(Arrays),可以用相同名字引用一系列变量,并用数字(索引)来识别它们,在许多场合,使用数组可以缩短和简化程序,因为可以利用索引值设计一个循环,高效处理多种情况。数组的元素下标是连续的。由于vb.net对... -
全局常量_VB编程(八)常量和变量
2021-01-15 06:50:55常量是在程序中预先设置的,值不会改变的数据,在定义的时候就要赋值。...模块级常量定义在窗体模块的声明部分;全局常量定义在标准模块的声明部分,并且要在Const前加上 Public关键字。变量是指在程序... -
VB.NET学习笔记:数据类型——数组的定义和使用(动态数组、二维数组)
2019-01-15 11:50:15VB.NET中,可以使用变量储存数据,例如储存学生姓名: dim strname as string="张三" 可以声明多个变量来储存三年级1班全部学生姓名,为了方便,给每个学生编了号: dim 三... -
static就是声明的静态变量
2009-03-20 22:15:00static就是声明的静态变量,下面是VB中的静态变量解释,他和JAVA中的是一样的:1. 静态局部变量 在局部变量的说明前再加上static说明符就构成静态局部变量。 例如: static int a,b; static float array[5]={1,2,3,... -
讲解在VB.NET中如何使用声明语句
2012-08-07 10:25:49使用VB.NET声明语句命名和定义过程、变量、属性、数组和常数。在声明编程元素时,还可以定义其数据类型、访问级别和范围。有关更多信息,请参见已声明元素的特性。 下面的示例包含三个声明。 Visual Basic ... -
vb的property 和event
2015-10-19 10:45:00Event 语句定义用户自定义的事件。语法[Public] Event procedurename [(arglist)]Event 语句包含下面部分:部分 描述 Public 可选的。指定该 Event 在整个工程中都是可见的。缺省情况下 Events 类型是 Public。应... -
VB6的后期绑定和前期绑定
2010-12-18 22:15:591. 什么是后期绑定和前期绑定后期绑定 MSDN 6的定义如下: 后期绑定:若将一个变量声明为 As Object 或 As Variant(包括 As Form 或 As Control 的变量),Visual Basic 在编译时就无法确定该变量将引用哪种类型的... -
关于VB6的后期绑定和前期绑定
2005-05-11 13:21:00什么是后期绑定和前期绑定后期绑定 MSDN 6的定义如下: 后期绑定:若将一个变量声明为 As Object 或 As Variant(包括 As Form 或 As Control 的变量),Visual Basic 在编译时就无法确定该变量将引用哪种类型的... -
VB.Net - 常数和枚举
2021-02-27 11:19:56常量被视为常规变量,除了它们的值不能在它们的定义之后被修改。 enumeration 枚举是一组命名的整数常量。 声明常量 在VB.Net中,常量是使用Const语句声明的。 Const语句用于模块,类,结构,过程或块级别,以用于... -
vb .net 输出_VB.Net 教学(五)常数和枚举
2020-12-14 15:57:41原文链接:VB.Net 教学(五)常数和枚举constants ...常量被视为常规变量,除了它们的值不能在它们的定义之后被修改。enumeration 枚举是一组命名的整数常量。声明常量在http://VB.Net中,常量是使用Const语句声明的... -
vb6.0 定义一个公共类_Flutter必备语言Dart教程03 - 类,泛型
2020-12-13 22:49:28上篇中我们学习了Flutter必备语言Dart教程02 - 控制流,异常,现在我们继续学习Dart中的类和泛型。Class以下是在Dart中声明一个简单类,并创建它的实例的方法。向类中添加实例变量,以及构造函数Dart提供了一种构造... -
【VFB】变量和数据类型(VFB教程2-3)
2018-02-26 21:18:03此处为VisualFreeBasic编程教程(从零开始学或VB进阶)的子章节部分,全部目录点链接。变量变量是可以操纵的名称符号。它们使用由字母,数字和字符“_”组成...根据给定该变量的Dim声明的方式和方式,变量可供稍后访问... -
C#与VB的基础比较
2014-04-05 20:08:00学习完了C#后,然后回过头来想了想VB,两者的相同之处还是挺多的...当定义一个值类型的变量时,C#会根据所声明的类型,以堆栈方式分配一块大小相适应的存储区域给这个变量,随后对这个变量进行读和写操作。 值类型就 -
vb调用 java函数_VB中如何在窗体中调用模块的public函数?
2021-03-08 03:51:42可以使用 Public 语句声明一个过程,Public NumberOfEmployees As Integer也可以使用 Public 语句来声明变量的对象类型:在模块级别中使用,PrivateNumberOfEmployees As Integer也可以使用Private语句来声明变量的... -
VB.NET笔记1
2011-11-01 16:37:47VB.NET 也是完全面向对象的语言 mybase可以调用基类的 函数 mybase不是对象 而是一...类的属性通过 Property 定义 通过 Set End Set 和Get End Get 过程可以对内部一个声明 private的私有变量 进行赋值或者 获取 -
VB不同模块过程的调用、菜单的编辑
2010-12-14 20:53:00<br />标准模块是多个窗体中的公共代码部分,只能存放通用过程,一个应用程序可以有多个标准模块 使用Dim或Static声明的变量称为局部变量,这种变量只在所定义的过程中有效,不同的过程中局部变量可以... -
Python语法基础以及其与C、VB以及JS等语法的对比
2019-09-09 10:32:47Python 和JS 均为弱类型语言,即在定义一个变量时,只需声明其名字,而无需显式声明其类型。而C和VB则于此不同。例如: int i = 1; // C Dim i As Integer = 1 ' VB var i = 1; (全局变量) 或直接 i = 1; ... -
枚举类型未设定范围_VB.Net 教学(五)常数和枚举
2021-01-26 04:39:02原文链接:VB.Net 教学(五)常数和枚举constants ...常量被视为常规变量,除了它们的值不能在它们的定义之后被修改。enumeration 枚举是一组命名的整数常量。声明常量在http://VB.Net中,常量是使用Const语句声明的... -
用VB编写基于控制台的程序
2008-03-31 22:09:00设计思路 (1)分配控制台程序的内存资源...实现步骤 (1)启动VB,新建一个工程,删除默认的“From1”窗体,然后添加一个模块,在该模块中输入常量和全局变量的定义代码。 注:API函数的声明可参照“本期API函数声明” -
在VB下用串口通信实现无线通信的方法
2013-03-20 13:47:39利用VB开发通信程序主要的方法有两种:一是利用VB本身提供的控件(CONTRALS);另一种方法是利用Windows API应用程序接口。Windows API 主要提供了三个...在VB调用之前应该先在全局变量定义处声明API通信函数、定义常量。 -
VB验收总结
2020-01-16 16:08:52进行起来当师父提问后,我发现我的问题太多了,简直和没学过VB一样,只是照着敲了一遍代码,下面是我总结的一些问题。 1、为什么option explicit,有的有,有的没有 在代码前加上Option Explicit,变量在使用之前... -
非Access数据库在VB中的编程及应用
2009-05-12 17:26:13而且,尽管dBASE、Paradox本身的DDL (Data Definition Language,即数据定义语言)和DML(Data Manipulation Language,即数据操纵语言)是非结构化查询的,但它们仍然可以使用VB的SQL语句和JET引擎来操纵。... -
VB串行通信
2013-03-20 13:50:31利用VB开发通信程序主要的方法有两种:一是利用VB本身提供的控件(CONTRALS);另一种方法是利用Windows API应用程序接口。Windows API 主要提供了三个...在VB调用之前应该先在全局变量定义处声明API通信函数、定义常量。 -
VB 2010 (11)创建类
2020-04-03 17:34:01使用Class关键字可以创建类,类包含了组成类的变量、方法、属性和事件的定义(声明)和实现(代码)。每个基于这个类创建的对象都会具备相同的方法、属性和事件,以及类中的字段定义的一组定制数据。 1.Class关键宇...