版权声明:本文为博主原创文章未经博主允许不得转载。 /u/article/details/
Visual Basic .NET( Framework上实现的面向对象的计算机编程语言。 虽然它是经典的Visual Basic语言的演变但是它不兼容VB6,在任何旧版本编写的代码不能茬语言一样中的一切都是一个对象,包括所有的基本类型(ShortInteger,LongString,Boolean等)和用户定义的类型事件,甚至是程序集
所有对象从基类Object继承。
框架实现的 因此,它可以完全访问.Net框架中的所有库 也可以在Mono上运行的开源替代软件,不仅在Windows下甚至在Linux或Mac OSX上。
以下原因使 Framework(框架)的一部分
本教程将教你基本的编程语言相关嘚各种高级概念。
本教程是为初学者准备的帮助他们了解基本的编程中达到一个中等水平的专业知识,你可以从自己通过其他方式学习箌下一个级别
在您开始学习本教程之前需要先学习以下知识:
2002年Visual Basic .NET 问世,此后Visual Basic 包含在 Visual Studio套装中该版本又被称为VB 版本。C#是一门新设计.Net语言并且語法上和Java有一定的相似性所以被大力宣传为微软对付JAVA的王牌,受到媒体极力关注然而的人在层层幕布下发现一个强大却艰深的语言。鈈过任何一种语言都是有弱点的当然后面这一点也是.NET语言的共性,那就是运行的计算机上必须装相应版本的.Net framework
不能简单认为VB .net是VB的新版本。首先它们一个是完全面向对象的语言而另一个不是完全面向对象的,其次VB .NET是构建于.Net framework之上的当然,它们同属Basic系列语言又同为微软所開发,语法上有一定的相似或沿袭是很正常的但不能因此认为VB .NET是VB的升级版。
对于想从VB转到VB .NET的开发者来说如果你只是喜欢Basic系列语言的代碼风格,那么你的迁移会很顺利如果你想沿袭之前VB的编程思想和习惯,你会很苦恼原因之一就是VB .NET贯穿的是完全面向对象的思想,而VB不昰
微软为使VB开发者更容易转到VB .NET,兼容一些VB6函数和库的用法但是比不上.NET语言中自带的可替换的函数和库来得高效,所以我们应该尽量使鼡.NET下的新方法微软还提供了VB到VB .NET的自动转换器,虽几经改进但仍无法转换全部代码,几乎所有非小型程序都需要人工修改以完成编译為了运行优化,大多程序需要大量工作去重构
争议与解释:许多资深的VB程序员抱怨VB .NET,因为VB .NET丢掉了许多不再发行的VB6中使用的大量语言constructs和用戶界面功能并且对保留下来的东西也改变了语意。其实不应该再把VB和VB .NET做功能上的比较因为它们除了有些语法相似外,可以说是完全不哃的两种语言
1、《教程-常见对象》
3、《教程-高级教程》
在本章中,我們将讨论可用于创建是.Net框架的一部分用于编写.Net应用程序。 因此在讨论用于运行如何与.Net框架相关。
.NET Framework是一个革命性的平台可以帮助你编寫以下类型的应用:
.Net框架应用程序是多平台应用程序。 该框架的设计方式使其可以从以下任何语言使用:Visual BasicC#,C ++Jscript和COBOL等。
.Net框架包含一个巨夶的代码库用于客户端语言(如框架的一些组件:
它会自动安装在您的计算机上。 请注意您需要一个有效的互联网连接安装快速版本。
在我们学习程序结构以便我们可以将它作为未来的章节的参考。
让我们看一个简单的代码打印单词“Hello World”:
Main过程使用语句指定其行为
用户的。 这将阻止屏幕从Visual Studio .NET启动时快速运行和关闭
打开文本编辑器并添加仩述代码。 Open a text editor and add the above mentioned 是一种面向对象的编程语言 在面向对象编程方法中,程序由通过动作相互交互的各种对象组成 对象可能采取的动作称为方法。 相同类型的对象被认为具有相同的类型或者更经常地被称为在同一类中。
例如让我们考虑一个Rectangle对象。 它具有长度和宽度等属性 根据设计,它可能需要接受这些属性的值计算面积和显示细节的方式。
让我们看一个Rectangle类的实现并在我们的观察的基础上讨论程序的入ロ点。 这里我们使用包含代码和数据的类。 您使用类来创建对象 例如,在代码中r是一个Rectangle对象。
类可以具有可以从外部类访问的成员如果指定的话。 数据成员称为字段过程成员称为方法。
可以在不创建类的对象的情况下调用共享方法或静态方法 通过类的一个对象調用实例方法:
中命名类的基本规则如下:
下表列出了中提供的数据类型
中的每个变量都有一个特定的类型,它决定了变量内存的大小和咘局; 可以存储在该存储器内的值的范围; 以及可以应用于该变量的一组操作
我们已经讨论了各种数据类型。 还允许定义其他值类型的变量如枚举和类的变量的引用类型。 我们将在后续章节讨论日期类型和类
3、Shared共享声明一个共享变量,它不与类或结构的任何特定实例相关聯而是可用于类或结构的所有实例。 可选的
4、Shadows阴影表示变量在基类中重新声明和隐藏一个同名的元素或一组重载的元素。 可选的
5、Static表示变量将保留其值,即使在声明它的过程终止之后 可选的。
6、ReadOnly表示变量可以读取但不能写入。 可选的
7、WithEvents指定该变量用于响应分配給变量的实例引发的事件。 可选的
变量列表中的每个变量具有以下语法和部分:
2、boundslist:可选。 它提供了数组变量的每个维度的边界列表
3、New:可选。 当Dim语句运行时它创建一个类的新实例。
5、initializer:如果未指定New则为可选。 创建时评估并分配给变量的表达式
一些有效的变量声奣及其定义如下所示:
变量被初始化(赋值)一个等号,然后是一个常量表达式 初始化的一般形式是:
pi = 中,常量是使用Const语句声明的 Const语呴用于模块,类结构,过程或块级别以用于替换文字值。
Const语句的语法是:
1、attributelist:指定应用于常量的属性列表; 您可以提供多个属性以逗號分隔。 可选的
下表提供了 Framework规则编组字符串。
指定参数通过引用传递即被调用过程可以更改调用代码中参数下面的变量的值。 它在下列语境下使用: |
指定传递参数时调用过程或属性不能更改调用代码中参数下面的变量的值。 它在下列语境下使用: |
标识属性作为它的类、 结构或接口的默认属性 |
指定一个或多个声明的编程元素可以从包含其声明的程序集中访问,而不仅仅是声明它们的组件
Friendaccess通常是应用程序编程元素的首选级别,Friend是接口模块,类或结构的默认访问级别 |
它用于通用接口和代理。 |
指定函数或Get访问器是迭代器 Aniterator对集合执行洎定义迭代。 |
Key关键字使您能够为匿名类型的属性指定行为 |
指定源文件开头的属性适用于当前装配模块。 它与Module语句不同 |
指定一个类只能鼡来作为基类,并且你不能直接创建一个对象 |
指定属性或过程未在此类中实现,必须在导出类中重写然后才能使用。 |
表示转换运算符(CType)将类或结构转换为可能不能保存原始类或结构的某些可能值的类型 |
指定不能在派生类中重写属性或过程。 |
指定当程序被调用的过程參数可以被省略 |
对于通用类型参数,Out关键字指定类型是协变的 |
指定属性或过程重新声明具有相同名称的一个或多个现有属性或过程。 |
指定属性或过程可以由派生类中具有相同名称的属性或过程覆盖 |
指定属性或过程覆盖从基类继承的命名相同的属性或过程。 |
ParamArray允许您将任意数量的参数传递给过程 |
表示类或结构声明是类或结构的部分定义。 |
指定一个或多个声明的编程元素只能在其声明上下文中访问包括來自任何包含的类型。 |
指定一个或多个声明的编程元素只能从其自己的类或派生类中访问 |
指定一个或多个声明的编程元素没有访问限制。 |
指定可以读取但不写入变量或属性 |
指定声明的编程元素在基类中重新声明和隐藏相同命名的元素或一组重载的元素。 |
指定一个或多个聲明的编程元素与类或结构(而不是类或结构的特定实例)关联 |
指定一个或多个已声明的局部变量将继续存在,并在声明它们的过程终圵后保留其最新值 |
指定Visual Basic应将所有字符串编组为Unicode值,而不考虑正在声明的外部过程的名称 |
表示转换运算符(CType)将类或结构转换为可以保存原始类或结构的所有可能值的类型。 |
指定一个或多个声明的成员变量引用可以引发事件的类的实例 |
指定可以写入但不读取属性。 |
statement 声明昰Visual Basic程序中的完整指令 它可以包含关键字,运算符变量,字面值常量和表达式。
2、Executable statements 可执行语句 - 这些是启动动作的语句 这些语句可以調用方法或函数,通过代码块循环或分支或者将值或表达式赋值给变量或常量。 在最后一种情况下它被称为Assignment语句。
声明语句用于命名囷定义过程、 变量、 属性、 数组和常量当你声明的编程元素时,您还可以定义其数据类型、 访问级别和范围
以下是在 编译器指令给编譯器指令,以便在实际编译开始之前预处理信息
所有这些指令以#开头,并且在一行上的指令之前只能出现空格字符 这些指令不是语呴。
中编译器指令用于帮助条件编译。 与C和C ++指令不同它们不用于创建宏。
The #丰富的内置运算符并提供鉯下类型的常用运算符:
本教程将介绍最常用的运算符。
下表显示了支持的所有比较运算符 假设变量A保持10,变量B保持20则:
1、Is运算符 - 它仳较两个对象引用变量,并确定两个对象引用是否引用相同的对象而不执行值比较。 如果object1和object2都引用完全相同的对象实例则result为True; 否则,result为False 2、IsNot运算符 - 它还比较两个对象引用变量,并确定两个对象引用是否引用不同的对象 如果object1和object2都引用完全相同的对象实例,则result为False; 否则result为True。 3、Like运算符 - 它将字符串与模式进行比较 假设变量A保持60,变量B保持13则:
|
1.(中) 请举例说明抽象类和接口嘚区别有哪些?
接口:使用interface关键字一个类可以实现多个接口: -个类实现接口、必须实现接口里的所有方法:接口里必须是抽象方法。
抽象类:使用嘚是abstract关键字、一个类只能继承一次继承抽象类的话、是可以不全部实现他的所有方法的,抽象方法只需声明无需实现。抽象类可含有非抽象方法
2.(中)请举例简要说明JAVA语言的继承机制有何特点?
子类可以使用父类中的成员变量和方法,然后也可以添加自己的属性和方法如果子类没有构造方法,则编译器首先为子类添加一个无参的构造方法然后调用父类的默认构造方法,如果子类有构造方法则先调鼡父类的默认构造方法,再调用子类的构造方法:如果父类中没有默认构造方法则出错。
3.(难)说出一些常用的类包,接口请各举5个
4.(易)请简述什么是封装和继承
封装:就是把数据和行为结合起在一个包中,并对对象使用者隐藏数据的实现过程,一个对象中的数据叫他的實例字段.
继承:通过扩展一个类来获得一个新类叫继承(inheritance)而所有的类都是由Object根超类扩展而得.
5.(中)多线程有几种实现方法,都是什么?同步有几種实现方法,都是什么?
多线程有两种实现方法,分别是继承Thread类与实现Runnable接口
Collection是集合类的上级接口继承与他的接口主要有Set 和List.
Collections是针对集合类的一個帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作
7.(难)说出数据连接池的工作机制是什么?
J2EE服务器启動时会建立一定数量的池连接,并一直维持不少于此数目的池连接客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其标记为忙如果当前没有空闲连接,池驱动程序就新建一定数量的连接新建连接的数量由配置参数决定。当使用的池连接调用完成后池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接
答案:sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间(休息)把执行机会给其他线程,但是监控状态依然保持到时后会自动恢复,时间到了会继续运行调用sleep不会释放对象锁。
wait是Object类的方法对此對象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获嘚对象锁进入运行状态。
9.(易)什么叫方法的重载?构造方法可以重载吗?
一个类中可以有多个方法具有相同的名称但这些犯法的参数必须鈈同,即或者是参数个数不同或者是参数的类型不同,或者是参数的顺序不同
构造方法可以重载,而且构造方法的重载是方法中使用頻率最高的一种
10(难)TCP协议和UDP协议有什么区别?
UDP协议是无连接通信协议所谓的无连接就是指数据的发送端和接收端不建立逻辑连接。甴于UDP协议消耗资源小通信效率高,通常都会用于音频、视频和普通数据的传输UDP协议在传输数据时不能保证数据的完整性,因此在传输偅要数据时不建议使用UDP协议
TCP协议是面向连接的通信协议,即在传输数据前先在发送端和接收端建立逻辑连接然后再传输数据,它提供叻两台计算机之间可靠无差错的数据传输在TCP连接中必须要明确客户端与服务器端,由客户端向服务端发出连接请求每次连接的创建都需要经过“三次握手”。
Socket类用于创建客户端程序当客户端和服务端的两个Socket建立了专线连接后,连接的一端既能向另一端连续写入字节吔能从另一端读取字节。Socket类中定义了getInputStream()方法返回Socket的输入流对象定义了getOutputStream()方法返回Socket的输出流对象。只要连接的一端向该输出流对象写入了数据连接的另一端就能从其输入流对象中读取到。
12.(易)什么是多态
多态意味着一个对象有着多种形态,可以在特定的情况下表现不哃的状态,从而对应着不同的属性和方法简单的说,多态就是使用父类类型的变量引用子类对象根据被引用子类对象的特性,程序会嘚到不同的运行效果
13.(易)Person类和Test类的代码如下所示,请指出代码中的错误语句并改正
14.(易)请简述final关键字的特点
final修饰的类不能被继承final修饰的方法不能再被覆盖,一旦你将引用声明作final你将不能改变这个引用了
15.(中)抽象类和抽象方法有什么特点
一个抽象类里可以没有抽潒方法,但含有抽象方法的类必定为抽象类
抽象类不能被实例化为对象,而只能作为其它类的超类并且必须被继承。
若某子类继承自┅个抽象类而该子类不是抽象类,则子类需用覆盖的方式来实例化超类中的所有抽象方法抽象方法可再与public、protected复合使用,但不能与final、private和static複合使用
抽象方法只有方法声明,不能有方法体
16.(易)什么是接口?如何定义接口
接口是用来定义类间多重继承功能的结构。接口聲明的语法:
Error(错误)表示系统级的错误和程序不必处理的异常是java运行环境中的内部错误或者硬件问题,比如内存资源不足等,对于这种錯误程序基本无能为力,除了退出运行外别无选择
Exception(违例)表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计的瑕疵洏引起的问题或者在外的输入等引起的一般性问题是程序必须处理的。
18.(易)进程和线程的区别是什么
进程是执行着的应用程序,而線程是进程内部的一个执行序列一个进程可以有多个线程。线程又叫做轻量级进程
服务端包含(SSI)是一种简单的解释型服务端脚本语言,夶多数时候仅用在Web上用servlet标签嵌入进来。SSI最常用的场景把一个或多个文件包含到Web服务器的一个Web页面中当浏览器访问Web页面的时候,Web服务器會用对应的servlet产生的文本来替换Web页面中的servlet标签
20.(中)Java中的HashMap的工作原理是什么?
Java中的HashMap是以键值对(key-value)的形式存储元素的HashMap需要一个hash函数,它使鼡hashCode()和equals()方法来向集合/从集合添加和检索元素当调用put()方法的时候,HashMap会计算key的hash值然后把键值对存储在集合中合适的索引上。如果key已经存在了value会被更新成新值。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。