1、Java程序设计,第1章 java概述,楚雄师范学院计算机科学系 java程序设计课程,2/138,学习目标,1. 了解计算机的组成及运行原理,了解简单机器语言程序的执行特征; 2. 理解汇编语言指令与机器语言指令的关系,理解高级语言与汇编语言的关系,理解编译程序或编译器的功能与作用,初步理解掌握执行程序的过程; 3. 了解高级语言发展简史;初步理解操作系统、客户/服务器以及Internet和WWW的基本概念。,楚雄师范学院计算机科学系 java程序设计课程,3/138,学习目标,4. 了解Java语言的特点,理解Java程序上机执行过程,掌握简单的Java 应用程序和Java applet程
2、序的基本结构,能上机执行Java 应用程序和Java applet程序;能初步使用格式化输入输出语句。 5. 初步理解对象和类的概念,掌握表示它们的UML图形符号。,楚雄师范学院计算机科学系 java程序设计课程,4/138,内容摘要,1.1计算机、Internet和WWW 1.2 Java语言 1.3 Java程序 1.4 对象与统一建模语言UML,楚雄师范学院计算机科学系 java程序设计课程,5/138,内容摘要,1.1计算机、Internet和WWW 1.2 Java语言 1.3 Java程序 1.4 对象与统一建模语言UML,楚雄师范学院计算机科学系 java程序设计课程,6/138
3、,1.1 计算机、Internet和WWW,Java语言是当今最为成功的计算机高级语言之一,是开发互联网应用的重要语言。它是富有经验的程序员或计算机及其相关专业的学生不能不学习的语言,事实上,它是许多各类学校计算机及其相关专业学生的一门课程。通过对它的学习,学生将熟悉面向对象程序设计基本知识和基本技能,并积累面向对象编程经验,掌握当流行的应用程序开发技术,而这正是Java语言程序设计教材主要目的之一。本章是学习Java语言程序设计的一个简短入门。,楚雄师范学院计算机科学系 java程序设计课程,7/138,1.1.1计算机的组成与运行,我们操作过计算机的人都知道,计算机就是一种设备,它能让我们
4、进行文字处理,绘制图形,玩游戏,听音乐,制作动画,上网查询信息和观看网络电影,等等。这是从计算机应用角度上的认识,实际上,计算机是能够以比人快几百万甚至几十亿倍的速度执行计算和逻辑判断的设备。这种说法可能让人感到有点神奇甚至迷惑:,楚雄师范学院计算机科学系 java程序设计课程,8/138,1.1.1计算机的组成与运行,“文字处理、绘制图形、玩游戏、制作动画、听音乐、上网查询信息和观看网络电影等”是怎样与“执行计算和逻辑判断”联系起来呢? 实际上,我们使用的计算机即计算机系统包含两大部分,一是硬件本身,它包括键盘、鼠标、显示器、磁盘和主机(箱)等;另一是软件。,楚雄师范学院计算机科学系 jav
5、a程序设计课程,9/138,1.1.1计算机的组成与运行,计算机硬件本身提供了执行计算和逻辑判断的功能,这些功能表现为一组指令,如加法指令、减法指令、取数指令、存数指令、输入指令和输出指令以及逻辑判断类指令等; 而软件是程序员利用计算机指令集,规划组织完成令我们激动的玩游戏、听音乐和制作动画等计算机应用的特定指令序列。软件也可简称为程序。实际上,,楚雄师范学院计算机科学系 java程序设计课程,10/138,1.1.1计算机的组成与运行,软件与程序是不等价的,简单说,软件 = 程序 + 相关文档资料。 计算机硬件是在程序的指令集控制下处理数据的。计算机程序控制着计算机,使它按顺序执行一系列动作
6、,这些动作是由程序员规划的,并用指令描述的。 各种计算机无论外观差别有多大,每一台计算机实际上都可划分为五个逻辑单元(或称五大部分),如图1-1所示。,楚雄师范学院计算机科学系 java程序设计课程,11/138,楚雄师范学院计算机科学系 java程序设计课程,12/138,1.1.1计算机的组成与运行,1)输入单元。输入单元是计算机接收信息的部分。它从各种输入设备读取信息(数据和计算机程序),并把这些放置到其它处理信息的单元中。当今计算机的大多数信息是通过键盘输入的,但也逐渐出现使用其它许多输入设备来进行信息输入,如扫描仪、声音输入设备等。,楚雄师范学院计算机科学系 java程序设计课程,1
7、3/138,1.1.1计算机的组成与运行,2)输出单元。输出单元是计算机输出信息的部分。它把计算机处理过的信息放置到各种输出设备中,从而使这些信息能够被计算机外部使用。当今计算机的大多数信息是通过屏幕显示和纸张打印输出的,同时也出现使用其它许多输出设备来进行信息输出,如音箱等。,楚雄师范学院计算机科学系 java程序设计课程,14/138,1.1.1计算机的组成与运行,3)内存单元。内存单元是计算机中存取速度快、容量相对较少的储存部分。它能够记忆来自输入单元的信息,因而能够在需要的时候立即处理这些信息。内存单元还能够记忆被处理过的信息,直到输出单元把信息放到输出设备上。内存单元经常被称为内存或
8、主存。内存在计算机电源关闭后将不起作用。,楚雄师范学院计算机科学系 java程序设计课程,15/138,1.1.1计算机的组成与运行,4)中央处理单元(CPU)。中央处理单元是计算机中的“加工”和“管理”部分。它负责执行各种计算如加、减、乘、除等,负责逻辑判断如比较内存中的两个数是否相等,这部分又称为运算器。同时,它还是计算机的协调者,负责管理对其它部分的操作,这部分又称为控制器。在应该把信息读到内存单元中时,CPU就会向输入设备发出请求;,楚雄师范学院计算机科学系 java程序设计课程,16/138,1.1.1计算机的组成与运行,当要把内存中信息用于计算时,CPU会把这种请求通知其内部的运算
9、器;当要把内存中的信息发送给某个输出设备时,CPU就会告诉输出设备。 5)二级存储单元。二级存储单元是计算机中可以长久保存信息的高容量存储部分。没有被其它单元使用的程序和数据通常放在二级存储单元中(如磁盘),,楚雄师范学院计算机科学系 java程序设计课程,17/138,1.1.1计算机的组成与运行,这些信息可能需要几个小时、几天、几个月甚至几年才会被使用。二级存储单元也称为外存储器,外存或称为辅存。 计算机运行的过程,就是顺次执行程序中指令的过程。计算机的指令以及运行时数据都是采用二进制数表示的。下面举一个简单的例子说明计算机的运行。,楚雄师范学院计算机科学系 java程序设计课程,18/1
10、38,1.1.1计算机的组成与运行,例1.1 设计一个程序,其运行后接受用户输入的两个数,然后计算其平均值,并输出结果。 解答:解决问题的过程为: 1)输入两个数存放于变量a和b中; 2)计算(a+b)/2,并将其结果存储于变量X中; 3)输出X中的值;,楚雄师范学院计算机科学系 java程序设计课程,19/138,1.1.1计算机的组成与运行,当用计算机的指令来完成上述过程时,需要考虑到计算机的具体特性,如计算机中没有变量,而是用存储单元来表示等。完成上述过程的指令序列及其运行时在内存的存储布局如图1-2所示。,楚雄师范学院计算机科学系 java程序设计课程,20/138,楚雄师范学院计算机
11、科学系 java程序设计课程,21/138,1.1.1计算机的组成与运行,例子说明:每8位二进制数称为一个字节(Byte),每一条指令用若干个字节的二进制代码表示,并存储到内存单元中。最小内存单元为1个字节,它必须用一个编号来表示,这个编号称为单元地址。在图1-2中我们并没有把每个单元的地址标出来,只标出每条指令代码存储的起始单元的地址。,楚雄师范学院计算机科学系 java程序设计课程,22/138,1.1.1计算机的组成与运行,图1-2中的开始三个字节存储单元分别表示变量a、b和X,用于存储它们的值。其它存储单元用于存储指令,这些指令的含义解释如下。 第一条指令用2个字节数据“1000011
12、0 01100000”表示CPU从输入设备读进一个数(a)并放置到寄存器AL中。,楚雄师范学院计算机科学系 java程序设计课程,23/138,1.1.1计算机的组成与运行,第二条指令用3个字节数据“10100010 00000100 00000000”表示CPU把寄存器AL中数放置到内存中地址编号为00000100的存储单元(1个字节)中保存。其中第3个字节数据和第2个字节数据合成一个16位二进制数据(即00000000 00000100),表示存储单元(a)的地址。,楚雄师范学院计算机科学系 java程序设计课程,24/138,1.1.1计算机的组成与运行,第三条指令用2个字节数据“100
13、00110 01100000”表示CPU从输入设备读进一个数(b)并放置到寄存器AL中; 第四条指令用3个字节数据“10100010 00000101 00000000”表示CPU把寄存器AL中数放置到内存中地址编号为00000101的存储单元(1个字节)中保存。其中第3个字节数据和第2个字节数据合成一个16位二进制数据(即,楚雄师范学院计算机科学系 java程序设计课程,25/138,1.1.1计算机的组成与运行,即00000000 00000101),表示存储单元(b)的地址。 第五条指令用3个字节数据“10100000 00000100 00000000”表示CPU从内存中地址编号为00
14、000100的存储单元读进1个字节数据(a)并放置到AL寄存器中。,楚雄师范学院计算机科学系 java程序设计课程,26/138,1.1.1计算机的组成与运行,第六条指令用4个字节数据“00000000 11000000 00000101 00000000”表示CPU把内存中地址编号为00000101存储单元的数据(b)加到AL寄存器中。 第七条指令用2个字节数据“10110001 00000010”表示CPU把数00000010即2存储到CL寄存器中。,楚雄师范学院计算机科学系 java程序设计课程,27/138,1.1.1计算机的组成与运行,第八条指令用2个字节数据“11110110 11
15、110001”表示CPU用CL中数支除AL寄存器中数,其结果存储在AL寄存器中。 第九条指令用3个字节数据“10100010 00000110 00000000”表示CPU把寄存器AL中数传送到内存中地址编号为00000110的存储单元(X)中保存;,楚雄师范学院计算机科学系 java程序设计课程,28/138,1.1.1计算机的组成与运行,第十条指令用3个字节数据“10111010 11010101 00000011”表示CPU把数00000011 11010101即03D5H(十六进制)存储到DX寄存器中;03D5H表示显示器的端口号。 第十一条指令用1个字节数据“11101110”表示C
16、PU把AL寄存器中数送到DX寄存器所指向的端口连接的设备即显示器。,楚雄师范学院计算机科学系 java程序设计课程,29/138,1.1.1计算机的组成与运行,第十二条指令用1个字节数据“11110100”表示CPU停止执行指令。 计算机的指令集也称为机器语言,上述的指令序列也称为机器语言程序。注意,该例子中用汉语描述计算过程时的每一步,在用机器语言描述时需要多条指令。,楚雄师范学院计算机科学系 java程序设计课程,30/138,1.1.2机器语言、汇编语言和高级语言,机器语言就是计算机CPU的指令集合,用它表示的计算程序即机器语言程序可以直接由计算机执行。我们所谓的使用计算机,其它实质就是
17、通过使用机器语言来完成计算任务,所以从这个角度上讲,机器语言就是机器的“代表”或“化身”。 但机器语言程序难理解,因为机器指令是用二进制数据表示的。为了便于记忆、,楚雄师范学院计算机科学系 java程序设计课程,31/138,1.1.2机器语言、汇编语言和高级语言,理解机器指令或机器语言程序,人们用字母符号来表示机器指令,这种字母符号一般用一个有意义单词的前几个字母组成,如ADD表示加法指令,MOV表示传送数据等等。符号化的指令称为汇编指令,汇编指令的集合称为汇编语言,用它表示的程序称为汇编语言程序。 上节例子中的机器语言程序对应的汇编语言程序为下表右部分所示:,楚雄师范学院计算机科学系 ja
18、va程序设计课程,32/138,楚雄师范学院计算机科学系 java程序设计课程,33/138,1.1.2机器语言、汇编语言和高级语言,将该汇编语言程序与上节机器语言程序比较,我们可以发现每一条汇编语言指令与每一条机器指令基本上是一一对应的。注意,该汇编语言程序中,方括号中的数表示存储单元地址,这个数前后加上方括号,表示以该数为地址的存储单元内容,如第2条汇编指令中,0100表示地址为00000100的存储单元(a),寄存器中的数(a)将被放置在其中;,楚雄师范学院计算机科学系 java程序设计课程,34/138,1.1.2机器语言、汇编语言和高级语言,不加方括号的数表示一般数据,如第10条汇编
19、指令中,03D5H表示16进制数值03D5,将被放置到寄存器DX中。 汇编语言可以看作是机器语言的抽象,事实上,它是通过符号化机器代码来实现的。 然而用汇编语言表示人类社会的计算,也不大方便和直观,如上例中的,楚雄师范学院计算机科学系 java程序设计课程,35/138,1.1.2机器语言、汇编语言和高级语言,“MOV DX 03D5H和OUT DX AL”是用于“输出数据”,这两者之间几乎看不出有什么直观的联系。于是出现了所谓的高级语言作为对汇编语言的抽象,使得指令更加“概念化”,以便更接近我们的自然语言层次。用高级语言表示的程序称为高级语言程序。Java语言就是一种高级语言,用它写出类似上
20、述例子的程序是:,楚雄师范学院计算机科学系 java程序设计课程,36/138,1.1.2机器语言、汇编语言和高级语言,1 public class average 2 public static void main(String args) 3 int a = 12, b = 34, c ; 4 c = (a+b)/2; 5 System.out.println(“The average is:”+c); 6 7 ,楚雄师范学院计算机科学系 java程序设计课程,37/138,1.1.2机器语言、汇编语言和高级语言,输出结果: The average is: 23 程序说明:这里的Java程
21、序由一个所谓的类构成,第1行是该类的开始,定义了名为average的类,第7行以来结束该类的定义。 类一般包含多个方法,average类只含一个名为main的主方法,它由方法头部即,楚雄师范学院计算机科学系 java程序设计课程,38/138,1.1.2机器语言、汇编语言和高级语言,第2行开始到第6行结束,其包含三句即第3、4、5行,其中第3行声明三个整型变量a、b和c,分别存放两个整数和它们的平均值。第4行计算出a和b的平均值,并存放到(赋值给)变量c中。第5行从屏幕上输出文字“The average is:”和结果即c的值。 注:上述java程序中,每行开始的数字不是程序中的部分,它是作者
22、加上的,,楚雄师范学院计算机科学系 java程序设计课程,39/138,1.1.2机器语言、汇编语言和高级语言,用来表示行号,以便解释每行程序时,指明是哪一行。 可见,高级语言要比汇编语言容易理解和记忆,事实上,它的抽象程度比汇编语言的高,并且更“接近”我们人类的语言,如高级语言中的变量就是存储单元的抽象。 注:这里每一句如c=(a+b)/2对应了完成相应计算的多条汇编语句。,楚雄师范学院计算机科学系 java程序设计课程,40/138,1.1.2机器语言、汇编语言和高级语言,采用高级语言完成我们的计算任务,确实要比机器语言和汇编语言较自然和直观。但是,计算机毕竟只能执行机器指令,所以,当我们
23、编写出高级语言程序后,还得将它转换成对应的机器语言程序,才能使计算机去执行计算。 完成这种转换的过程称为程序翻译。 程序翻译犹如是现实中的语言翻译,也,楚雄师范学院计算机科学系 java程序设计课程,41/138,1.1.2机器语言、汇编语言和高级语言,有两种方式即“笔译”和“口译”。 笔译就是一次完整地翻译并记录在纸上,然后可以复印多份,同时供多人阅读。 而口译是在实际场景中,边讲边口头翻译,同样的话说两次,就得口译两次。显然。口译快,笔译慢;口译效率低,笔译效率高。,楚雄师范学院计算机科学系 java程序设计课程,42/138,1.1.2机器语言、汇编语言和高级语言,对程序翻译而言,其“笔
24、译”称为编译,其“口译”称为解释,并且编译和解释工作是由专门的程序来完成的,这种翻译程序分别称为编译程序和解释程序。 在编译过程,被翻译的语言程序也称为源程序,相应地翻译结果称为目标程序,并且当源程序是汇编语言程序是,对应的翻译程序称为汇编程序,如图1-3所示。,楚雄师范学院计算机科学系 java程序设计课程,43/138,1.1.2机器语言、汇编语言和高级语言,楚雄师范学院计算机科学系 java程序设计课程,44/138,1.1.2机器语言、汇编语言和高级语言,注意:由上可以看出采用机器语言、汇编语言和高级语言分别表示同一个计算时,虽然它们采用的命令或语句的数目不相同,特征也各异,但它们所包
25、含的内在计算步骤或过程是相同的。在后面我们将把这种“计算步骤或过程”称为算法。,楚雄师范学院计算机科学系 java程序设计课程,45/138,1.1.3 高级语言的发展简史,上个世纪50年代早期,开始出现符号化语言。格雷斯.霍帕(Grace Hopper)领导一个小组开发了A-0语言,约翰.巴克斯为IBM 701开发了加速代码。 1955年以后,开始出现一系列高级语言。1955年到1957年间,巴克斯领导一个组开发了公式翻译语言,楚雄师范学院计算机科学系 java程序设计课程,46/138,1.1.3 高级语言的发展简史,ALGOrithmic Language,也即ALGOL语言。该语言具有
26、几个不同的目标,即 1、ALGOL语言的表示应该接近标准数学。 2、ALGOL语言对于描述算法应该是有用的。 3、用ALGOL语言编写的程序应该可编译为机器语言程序。,楚雄师范学院计算机科学系 java程序设计课程,47/138,1.1.3 高级语言的发展简史,4、ALGOL语言不局限于某一计算机的体系结构。 正是ALGOL语言,引入了传递名字参数的过程调用概念,也是为了定义ALGOL语言,约翰.巴克斯和彼特.瑙尔给出了一种高级语言的语法描述方法,被称为巴克斯-瑙尔范式,或称为BNF。ALGOL语言后来又有了两次发展分别为ALGOL 60和,楚雄师范学院计算机科学系 java程序设计课程,48
27、/138,1.1.3 高级语言的发展简史,ALGOL 68。ALGOL语言并没有在美国得到推广。 FORTRAN语言和ALGOL语言都是基于数值计算的语言。 在早期语言的研究与开发的基础上,各种各样的高级语言迅速发展起来,多达几万种,但得到广泛应用的也就是十几种。,楚雄师范学院计算机科学系 java程序设计课程,49/138,楚雄师范学院计算机科学系 java程序设计课程,50/138,楚雄师范学院计算机科学系 java程序设计课程,51/138,1.1.4 程序运行的过程,在前面,为了便于写出完成计算的程序,引入了高级语言,而用高级语言写程序确实要比用汇编语言和机器语言来得方便和直观,但由此
28、也改变了我们运行程序的过程。 一般地,运行一个高级语言程序需要经历三个步骤: 第一就是要把源程序正确无误地输入到计算机内部,这一步称为编辑源程序,楚雄师范学院计算机科学系 java程序设计课程,52/138,1.1.4 程序运行的过程,并且是通过运行一个所谓的编辑程序来完成的; 第二步就是运行编译程序,来把源程序翻译成目标程序; 第三步就是运行该目标程序,完成特定的计算。 如图1-4所示.,楚雄师范学院计算机科学系 java程序设计课程,53/138,楚雄师范学院计算机科学系 java程序设计课程,54/138,1.1.5 操作系统,我们运行程序时,并不是简单地直接使用计算机硬件来进行,而是通
29、过运行在计算机中的所谓操作系统来完成的。操作系统是计算机中最重要的程序,用来管理和控制计算机的活动。我们经常使用的Windows 2000、XP或ME,就是一种常用的操作系统。没有操作系统,应用程序(如字处理程序、Internet浏览器等)就不能运行。硬件、操作系统、应用程序和用户之间的关系如图1-5所示。,楚雄师范学院计算机科学系 java程序设计课程,55/138,楚雄师范学院计算机科学系 java程序设计课程,56/138,1.1.5 操作系统,1. 控制和监督系统的活动 操作系统要对系统的安全负责,要确保没有权限的用户不能访问系统,要确保系统信息不受到破坏,要确保合法的操作得到执行,还
30、要确保不同程序和用户在同时使用计算机时不会相互干扰。操作系统不必须提供一些基本功能,如,识别键盘输入,向显示器发送输出,保存文件和目录,控制硬盘驱动器和打印机等。,楚雄师范学院计算机科学系 java程序设计课程,57/138,1.1.5 操作系统,2. 分配系统资源操作系统负责确定程序需要使用哪些计算机资源(CPU、内存、磁盘、输入和输出设备),并进行资源分配以便运行程序;程序结束时还要回收资源。 3. 安排操作的顺序操作系统还要负责安排和确定程序的执行顺序,以便有效地利用资源。为了增强系统的性能,目前许多操作系统支持多道程序设计、多线程和多处理技术。,楚雄师范学院计算机科学系 java程序设
31、计课程,58/138,1.1.5 操作系统,多道程序设计允许多个程序同时运行,共享CPU。例如,Web浏览器下载文件的同时,我们可以用字处理程序来编辑文件。 线程是程序中可同时运行的基本单。多线程允许一个程序内部同时有多个“子程序”并发处理,即可以同时运行。例如,Word字处理程序允许用户编辑文字的同时将其保存到文件中。这里编辑和保存就是同一个应用程序中的两个不同任务。 多处理也称为并行处理,是指用两个或多个处理器一起执行同一任务。,楚雄师范学院计算机科学系 java程序设计课程,59/138,1.1.6 客户/ 服务器,客户/服务器是网络系统中应用广泛的一种技术,它的用法有点混乱。客户/服务
32、器有两种用法: 一种用来指网络上作为提供信息共享服务的计算机和用户用来查询浏览网络上信息的计算机,前者称为服务器计算机或简称为服务器,后者称为客户计算机或简称为客户机。,楚雄师范学院计算机科学系 java程序设计课程,60/138,1.1.6 客户/ 服务器,另一种用法是指运行中的程序(进程或线程)之间的关系的处理方式,本书下面开始都是指的这种用法。 当一个程序在某一时刻向另一个程序提出请求服务时,则提出请求服务的程序称为客户,而提供服务的程序称为服务器。例如,我们通过Internet浏览器上网查询网络信息时,它就是一个客户程序,而提供信息的Web就是服务器。,楚雄师范学院计算机科学系 jav
33、a程序设计课程,61/138,1.1.6 客户/ 服务器,客户与服务器的关系并不是一成不变的,它们是一种相对的关系。在某一时刻是服务器的程序,在另一时刻就有可能成为客户程序。,楚雄师范学院计算机科学系 java程序设计课程,62/138,1.1.7 Internet和WWW,Internet互联网络是上世纪60年代以来,由美国国防部投资开发的。最初只是联接大约十几所大学和研究机构的主要计算机系统。今天,联入Internet的计算机数量已达几亿台。 WWW(The World Wide Web)是Internet互联网络上一种最广泛的应用技术或应用形式,它使Internet互联网络上的用户从世界
34、各地访问多媒,楚雄师范学院计算机科学系 java程序设计课程,63/138,1.1.7 Internet和WWW,体电子信息宝库。可以使用WWW查找和查看所有主题的基于多媒体的文档,可以预定旅馆的房间、购买飞机票、注册学习课程、下载各种资料、与朋友聊天、观看电影、收听实况直播等等。,楚雄师范学院计算机科学系 java程序设计课程,64/138,内容摘要,1.1计算机、Internet和WWW 1.2 Java语言 1.3 Java程序 1.4 对象与统一建模语言UML,楚雄师范学院计算机科学系 java程序设计课程,65/138,1.2 Java语言,Java是功能齐全的能用程序设计语言,可以
35、开发可靠的、要求严格的应用程序。Java不仅可以开发Web应用程序,而且还可以开发跨平台的独立应用程序,这些程序用于服务器、台式机、移动设备等。,楚雄师范学院计算机科学系 java程序设计课程,66/138,1.2.1 Java语言的特点,Java具有许多诱人的特点。这些特点正如Sun公司在Java语言白皮书开始处所说,包括Java是简单的、面向对象的、分布式的、解释型的、健壮的、安全的、结构中立的、可移植的、高效的、多线程的以及动态的等。 1. Java是简单的 任何一门计算机语言都不是简单的,,楚雄师范学院计算机科学系 java程序设计课程,67/138,1.2.1 Java语言的特点,因
36、为他们都具有进行程序设计所需要的基本功能和基本成份,需要完成常规程序设计。但是与程序设计语言C+相比,Java要显得简单一些。Java部分地模仿了C+,但是进行了极大的简化和改进。例如,C+中的指针和多重继续常常使程序复杂化,而Java丢弃了指针,并使用一种所谓接口(interface)的简单概念代替了多重继续。,楚雄师范学院计算机科学系 java程序设计课程,68/138,1.2.1 Java语言的特点,C+要求程序员自己去进行内存的分配与回收,而Java采用自动内存分配与回收。另外,Java比C+具有更少的语言概念,而功能却更强大。 2. Java是面向对象的 Java一开始就设计为完全面
37、向对象的,即Java天生就是面向对象的。而许多面向对象语言如C+,包含了面向过程的特征。,楚雄师范学院计算机科学系 java程序设计课程,69/138,1.2.1 Java语言的特点,所谓面向过程,指程序是按照问题解决的既定过程设计而的,它在的运行过程完全符合问题解决的既定过程,这就要求设计过程中必须按照(规定的)解决问题过程来进行,即通过把问题分解为若干小问题来进行求解,也即进行所谓的功能分解。这样,设计出来的程序是由一些功能模块构成,楚雄师范学院计算机科学系 java程序设计课程,70/138,1.2.1 Java语言的特点,(这种“功能模块”在C语言中称为函数),如图1-5所示,该程序是
38、用于计算规则图形面积,它被分解为四个功能模块。,楚雄师范学院计算机科学系 java程序设计课程,71/138,1.2.1 Java语言的特点,而面向对象是指程序是由对象构成的,这种对象是问题中事物的抽象,它包含数据字段和方法;数据字段和方法分别用来表征事物的属性和行为。面向对象还提供了对象的继承和多态性,这用来反映事物之间的关系。面向对象是对现实世界中事物及其关系的一种自然的反映,因而,它便于反映现实世界的变化,并且对付这种变化付出的代价要比面向过程技术小得多。,楚雄师范学院计算机科学系 java程序设计课程,72/138,1.2.1 Java语言的特点,作为面向对象的Java,它提供了封装、
39、继承和多态性,这使得它具有了极大的灵活性、模块性、透明性和可重用性。其中的重用性使我们可以重用代码。 3. Java是分布式的 分布式计算是网络上的一种高级应用形式,它使网络上的多台计算机整合为一个整体(好象一台计算机一样),,楚雄师范学院计算机科学系 java程序设计课程,73/138,1.2.1 Java语言的特点,透明地完成用户提交的工作。Java的设计使分布式计算变得容易起来,由于Java一开始就设计了网络工作能力,因而编写网络程序如同在文件中存取数一起。 4. Java是解释型的 Java程序运行前需要编译成一种所谓Java虚拟机(Java Virtual Machine,JVM)编
40、码,这种编码称,楚雄师范学院计算机科学系 java程序设计课程,74/138,1.2.1 Java语言的特点,为字节码(bytecode)。字节码独立于具体的计算机,运行时需要Java解释器来把它转换成本地计算机代码予以完成,所以它能在任何具有Java解释器的机器上运行。如图1-6所示是Java程序、Java字节码、Java虚拟机和计算机的关系。,楚雄师范学院计算机科学系 java程序设计课程,75/138,楚雄师范学院计算机科学系 java程序设计课程,76/138,1.2.1 Java语言的特点,大多数高级语言的编译器都把程序编译成机器代码,这种机器代码只能在本地计算机上运行,如果要在其他
41、计算机上运行,还得在这些计算机上重新编译。使用Java,只需要编译一次,其编译而成的字节码即可以在任何具有Java解释器的平台上运行。 5. Java是健壮的 任何一门程序设计语言都不能是绝对,楚雄师范学院计算机科学系 java程序设计课程,77/138,1.2.1 Java语言的特点,可靠的,其编制的程序都有可能发生这样或那样的错误。所谓健壮的就指避免错误和处理错误的能力较强。Java丢弃了其他语言中容易引起错误的某些程序概念类型,例如,它不支持指针,从而避免了重写内存而造成的数据破坏的可能性。另一方面,Java具有实时异常处理的功能,该特点有助于提高程序的健壮性。Java强,楚雄师范学院计
42、算机科学系 java程序设计课程,78/138,1.2.1 Java语言的特点,制程序员编写处理异常的代码,所以它能够捕获并响应意外情况,从而发生实时错误时程序能够继续正常执行错误处理代码,稳妥地结束。 5. Java是安全的 Java一开始就是用于Internet程序设计而出现的,网络和分布式环境是它的主要用途之一。所以,Java在安全上进行了精心的考虑,它执行多层安,楚雄师范学院计算机科学系 java程序设计课程,79/138,1.2.1 Java语言的特点,全机制用以保护系统不受到恶意地破坏,从而使用户在下载并运行一个Java applet(一种特殊的Java程序,它需要下载到本地计算机
43、Internet浏览器中运行)时,它不会损害本地的系统。安全性的前提是什么也不能信任。 6. Java是结构中立的 Java是解释型的,这一特点使得Java,楚雄师范学院计算机科学系 java程序设计课程,80/138,1.2.1 Java语言的特点,成为结构中立的(architecture-neutral),即Java是平台无关的。得用Java虚拟机,我们可编写任何平台上都能运行的程序。 7. Java是可移植的 Java是结构中立的,因而Java程序是可移埴的,它不必重新编译就能在任何平台上运行。Java在不同平台上运行时,用户不用担心数值的最大长度,楚雄师范学院计算机科学系 java程序
44、设计课程,81/138,1.2.1 Java语言的特点,和精度会发生变化。 8. Java是高效的 9. Java是多线程的 多线程使得一个程序可以同时执行多个任务成为可能,因而它被广泛应用于图形用户界面(Graphics User Interface,GUI)和网络程序设计中。在GUI程序设计中,有许多任务需要同时进行,如播放音乐、浏览网,楚雄师范学院计算机科学系 java程序设计课程,82/138,1.2.1 Java语言的特点,页等。在网络程序设计中,一个服务器可能同时为多个客户服务,如多台计算机上的浏览器同时向一台WWW服务器请求网页信息时,就需要服务器有多个线程分别响应它们的要求。一
45、般而言,使用多线程必须调用操作系统特定的过程才能实现,但Java语言却平衡地集成了多线程程序设计技术,简化了程序员的编程难。,楚雄师范学院计算机科学系 java程序设计课程,83/138,1.2.1 Java语言的特点,10. Java是动态的 Java是为适应变化的环境而设计的,不用重新编译就可以在不知不觉中装入新类。既不需要开发者创建新的软件版本,也不需要用户重新安装,必要时,新特征就可以透明地并入。,楚雄师范学院计算机科学系 java程序设计课程,84/138,1.2.2 Java环境与工具,Java环境由Java 应用编程接口(API)和Java虚拟机 (JVM)构成。Java 应用编
46、程接口是已编译的可在我们的程序中使用的代码库或预定义类库。它们使我们能够添加现成的可定制的功能,以节约编程时间。Java虚拟机是用来解释执行我们的Java程序。,楚雄师范学院计算机科学系 java程序设计课程,85/138,1.2.2 Java环境与工具,Java工具是给我们编写和运行Java程序提供支持的一组程序,它的主要功能就是编译Java程序。 为了构建Java环境,Sun公司提供了Java系统,该系统目前已支持1998年公布的Java2平台,主要的有三种即Java 2标准版(Java 2 Standard Edition,J2SE)、,楚雄师范学院计算机科学系 java程序设计课程,8
47、6/138,1.2.2 Java环境与工具,Java 2企业版(Java 2 Enterprise Edition,J2EE)以及Java 2微型版(Java 2 Micro Edition,J2ME)。其中J2SE主要用来开发客户端独立的Java应用程序和Java applet程序,J2EE主要用来开发服务端的应用程序如Java Servlets和JavaSever Page。J2ME主要用来开发移动设备编程。本书主要以,楚雄师范学院计算机科学系 java程序设计课程,87/138,1.2.2 Java环境与工具,J2SE5.0版为主。 Java工具都是由一些独立的程序构成,它们都是从命令行
48、运行的,例如,javac用来编译Java源程序,java用来解释执行已编译的Java程序。为了方便程序员编程,多家公司已经提供了快速集成开发环境IDE(Integrated Development Enviroment),它们把编辑、编译、,楚雄师范学院计算机科学系 java程序设计课程,88/138,1.2.2 Java环境与工具,链接、调试和在线帮助都集成在一个图形窗口中。只需要在一个窗口中输入源程序或打开已有的程序文件,点击按钮、菜单或者使用功能键就可以编译源程序。主要的Java集成开发工具有: Sun公司的NetBeans Open Source(beans.org),楚雄师范学院计算
49、机科学系 java程序设计课程,89/138,1.2.2 Java环境与工具,Borland公司的Jbuilder() IBM公司的Eclipse Open Source(www.eclipse.org) 本书将使用NetBeans集成开发工具。,楚雄师范学院计算机科学系 java程序设计课程,90/138,1.2.3 Java程序及其运行过程,一般地,运行一个Java程序需要经历三个步骤: 第一就是要把源程序正确无误地输入到计算机内部,并存放在.java文件中,这一步称为编辑源程序,并且是通过运行一个所谓的编辑程序来完成的; 第二步就是运行编译程序,来把源程,楚雄师范学院计算机科学系 java程序设计课程,91/138,1.2.3 Java程序及其运行过程,序翻译成一种Java虚拟机的字节码,并存放在.class文件中; 第三步就是解释执行该字节码,完成特定的计算。 如图1-7所示Java语言程序运行过程。,楚雄师范学院计算机科学系 java程序设计课程,92/138,楚雄师范学院计算机科学系 java程序设计课程,93/138,内容摘要,1.1计算机、Internet和WWW 1.2 Java语言 1.3 Java程序 1.4 对象与统一建模语言UML,楚雄师范学院计算机科学系 java程序设计课程,