《Java入门.docx》由会员分享,可在线阅读,更多相关《Java入门.docx(86页珍藏版)》请在优知文库上搜索。
1、Java入门一、JaVa语言JaVa语言有下面一些特点:简单、面向对象、分布式、解释执行、鲁棒、安全、体系结构中立、可移植、高性能、多线程以及动态性。:1.简单性Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,只需理解一些基本的概念,就可以用它编写出适合于各种情况的应用程序。JaVa略去了运算符重我、多重继承等模糊的概念,并且通过实现自动垃圾收集大大简化了程序设计者的内存管理工作。另外,Java也适合于在小型机上运行,它的基本解释器及类的支持只有40KB左右,加上标准类库和线程的支持也只有215KB左右。库和线程的支持也只有215KB左右。2 .面向对象JaVa语言的
2、设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。对象中封装了它的状态变量以及相应的方法,实现了模块化和信息隐臧;而类则提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。3 .分布性JaVa是面向网络的语言。通过它提供的类库可以处理TCP/IP协议,用户可以通过URL地址在网络上很方便地访问其它对象。4 .鲁棒性JaVa在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。它提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易,在编译时,Java提示出可能产生的错误。通过集成的面向对象的例外处理机制出现但未被处理的例外,帮
3、助程序员正确地进行选择以防止系统的崩溃。另外,Java在编译时还可捕获类型声明中的许多常见错误,防止动态运行时不匹配问题的出现。5 .安全性用于网络、分布环境下的JaVa必须要防止病毒的入侵。JaVa不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用特洛伊木马等欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。6 .体系结构中立JaVa解释器生成与体系结构无关的字节码指令,只要安装了JaVa运行时系统,Java程序就可在任意的处理器上运行。这些字节码指令对应于JaVa虚拟机中的表示,Java解释器得到字节码后,对它进行转换,使之能够在不同的平台运行
4、。7 .可移植性与平台无关的特性使JaVa程序可以方便地被移植到网络上的不同机器。同时,Java的类库中也实现了与不同平台的接口,使这些类库可以移植。另外,Java编译器是由Java语言实现的,Java运行时系统由标准C实现,这使得Java系统本身也具有可移植性。8 .解释执行JaVa解释器直接对JaVa字节码进行解释执行。字节码本身携带了许多,使得连接过程更加简单。编译时信息9 .高性能和其它解释执行的语言如BASIC.TCL不同,Java字节码的设计使之能很容易地直接转换成对应于特定CPU的机器码,从而得到较高的性能。10 .多线程多线程机制使应用程序能够并行执行,而且同步机制保证了对共享
5、数据的正确操作。通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。11 .动态性JaVa的设计使它适合于一个不断发展的环境。在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。并且JaVa通过接口来支持多重继承,使之比严格的类继承具有更灵活的方式和扩展性。二、JavaAppletJaVa语言的特性使它可以最大限度地利用网络。Ap-plet是JaVa的小应用程序,它是动态、安全、跨平台的网络应用程序。JavaAPPIet嵌入HTML语言,通过主页发布到Internet。网络用户访问服务器的APPle
6、t时,这些Applet从网络上进行传输,然后在支持JaVa的浏览器中运行。由于JaVa语言的安全机制,用户一旦载入APPIet,就可以放心地来生成多媒体的用户界面或完成复杂的计算而不必担心病毒的入侵。虽然APPIet可以和图像、声音、动画等一样从网络上下载,但它并不同于这些多媒体的文件格式,它可以接收用户的输入,动地进行改变,而不仅仅是动画的显示和声音的播放。三、丰富的类库JaVa提供了大量的类以满足网络化、多线程、面向对象系统的需要。1.语言包提供的支持包括字符串处理、多线程处理、例外处理、数学函数处理等,可以用它简单地实现JaVa程序的运行平台。2 .实用程序包提供的支持包括哈希表、堆栈、
7、可变数组、时间和日期等。3 .输入输出包用统一的流模型来实现所有格式的I/O,包括文件系统、网络、输入4 .低级网络包用于实现SoCket编程。5 .抽象图形用户接口包实现了不同平台的计算机的图形用户接口部件,包括窗口、菜单、滚动条、对话框等,使得JaVa可以移植到不同平台的机器。6 .网络包支持Internet的TCP/IP协议,提供了与InTernet的接口。它支持URL连接,WWW的即时访问,并且简化了用户/服务器模型的程序设计。JaVa和C、C+四、对于变量声明、参数传递、操作符、流控制等,Java使用了和C、C+,使得熟悉C、C+的程序员能很方便地进行编程。同时,Java为相同的传统
8、了实现其简单、鲁棒、安全等特性,也摒弃了C和C+中许多不合理的内容。1.全局变量JaVa程序中,不能在所有类之外定义全局变量,只能通过在一个类中定义公用、静态的变量来实现一个全局变量。例如:ClassGlobalVarpublicstaticglobal_var;)在类GlobalVar中定义变量gIobaljvar为publicStat-ic,使得其它类可以访问和修改该变量。JaVa对全局变量进行了更好的封装。而在C和C+中,依赖于不加封装的全局变量常常造成系统的崩溃。2 .GotoJaVa不支持CC+中的goto语句,而是通过例外处理语句try,Catch,final等来代替C、C+中用g
9、oto来处理遇到错误时跳转的情况,使程序更可读且更结构化。3 .指针指针是C、C+中最灵活,也是最容易产生错误的数据类型。由指针所进行的内存地址操作常会造成不可预知的错误,同时通过指针对某个内存地址进行显式类型转换后,可以访问一个C+中的私有成员,从而破坏安全性,造成系统的崩溃。而JaVa对指针进行完全的控制,程序员不能直接进行任何指针操作,例如把整数转化为指针,或者通过指针释放某一内存地址等。同时.,数组作为类在Java中实现,良好地解决了数组访问越界这一C、C+中不作检查的错误。4 .内存管理在C中,程序员通过库函数malloc()和free。来分配和释放内存,C+new和delete来分
10、配和释放内存。再次释放已释放的内存块或中则通过运算未被分配的内存块,会造成系统的崩溃;同样,忘记释放不再使用的内存块也会逐渐耗尽系统资源。而在JaVa中,所有的数据结构都是对象,通过运算符new为它们分配内存堆。通过new得到对象的处理权,而实际分配给对象的内存可能随程序运行而改变,Java对此自动地进行管理并且进行垃圾收集,有效防止了由于程序员的误操作而导致的错误,并且更好地利用了系统资源。5 .数据类型的支持在C、C+中,对于不同的平台,编译器对于简单数据类型如int,float等分别分配不同长度的字节数,例如:int在IBMPC中为16位,在VAX-Il中为32位,这导致了代码的不可移植
11、性,但在JaVa中,对于这些数据类型总是分配固定长度的位数,如对int型,它总占32位,这就保证了JaVa的平台无关性。6 .类型转换在C、C+中,可以通过指针进行任意的类型转换,常常带来不安全性,而JaVa中,运行时系统对对象的处理要进行类型相容性检查,以防止不安全的转换。7 .头文件C、C+中用头文件来声明类的原型以及全局变量、库函数等,在大的系统中,维护这些头文件是很困难的。而JaVa不支持头文件,类成员的类型和访问权限都封装在一个类中,运行时系统对访问进行控制,防止对私有成员的操作。同时,Java中用import语句来与其它类进行通讯,以便使用它们的方法。8 .结构和联合C+中的结构和
12、联合中所有成员均为公有,这就带来了安全性问题。C、JaVa中不包含结构和联合,所有的内容都封装在类中。9 .预处理C、C+中用宏定义来实现的代码给程序的可读性带来了困难。在Java中,不支持宏,它通过关键字final来声明一个常量,以实现宏定义中广泛使用的常量定义。第一章JaVa概述(续)李京华丁锂王克宏刘波?1.3.简单的JaVa程序下面我们先介绍两个简单的JaVa程序,并对其进行分析。例1.1.publicclassHelloWorldApp/anapplicationpublicstaticvoidmain(Stringargs)System,out.PrintIn(HelIoWorld
13、!,z);)本程序的作用是输出下面一行信息:HelloWorld!程序中,首先用保留字CIaSS来声明一个新的类,其类名为HellOWOrldAPP,它是一个公共类(public)0整个类定义由大括号)括起来。在该类中定义了一个main()方法,其中PUbliC表示访问权限,指明所有的类都可以使用这一方法;static指明该方法是一个类方法,它可以通过类名直接调用;Void则指明main()方法不返回任何值。对于一个应用程序来说,main()方法是必需的,而且必须按照如上的格式来定义。Jave解释器在没有生成任何实例的情况下,以main。作为入口来执行程序。JaVe程序中可以定义多个类,每个类
14、中可以定义多个方法,但是最多只能有一个公共类,main()方法也只能有一个,作为程序的入口。main。方法定义中,括号()中的Stringargs是传递给main()方法的参数,参数名为args,它是类String的一个实例,参数可以为0个或多个,每个参数用类名参数名来指定,多个参数间用逗号分隔。在main。方法的实现(大括号中),只有一条语句:System,out.printin(HelloWorld!/z);它用来实现字符串的输出,这条语句实现与C语言的中printf语句和C+中COUt,语句相同的功能。另外,后的内容为注释。现在我们可以运行该程序。首先把它放到一个名为HelloWorId
15、APP.java的文件中,这里,文件名应和类名相同,因为JaVa解释器要求公共类必须放在与其同名的文件中。然后对它进行编译:C:,javacHelloWorldApp.java编译的结果是生成字节码文件HelloWorldApp.classo最后用java解释器来运行该字节码文件:C:,javaHelloWorldApp结果在屏幕上显示HelloWorld!我们再来看下面的一个例子:例1.2importjava.awr.*;importjava,applet.*;publicclassHelloWorldAppletextendsApplet/anappletpublicvoidpaint(Graphicsg)g.drawString(zzHelloWorld!zz,20,20);)这是一个简单的APPIet(小应用程序)。程序中,首先用import语句输入java,awr和java,applet下所有的包,使得该程序可能使用这些包中所定义的类,它类似于C中的include语句。然后声明一个公共类HeIlOWOr