Java程序设计与应用第1章_第1页
Java程序设计与应用第1章_第2页
Java程序设计与应用第1章_第3页
Java程序设计与应用第1章_第4页
Java程序设计与应用第1章_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章

Java语言概述

学习目的:了解程序设计语言的发展历史了解Java语言的特色和应用背景了解Java虚拟机、Java的运行环境和Java编程语言开发环境初步掌握简单Java程序的创建、编译和运行学习重点面向对象的程序设计语言

Java虚拟机Java的运行环境Java程序的创建、编译和运行2023/2/42第1章

Java语言概述

本章提要:

1.程序设计语言概述2.Java语言简介3.

Java语言概述

4.简单Java程序的创建、编译及运行步骤2023/2/431.1程序设计语言概述

1.1.1计算机程序设计方法和语言随着计算机硬件与通讯技术的发展,计算机应用领域越来越广泛,应用规模也越来越大,程序设计不再是一、两个程序员可完成的任务,在这种情况下编写程序不再片面追求高效率,而是综合考虑程序的可靠性、可扩展性、可重用性和可理解性等因素。

程序设计方法是独立于具体程序设计语言的一门技术。由于程序设计通常离不开程序设计语言作为工具,所以容易混淆程序设计方法与程序设计语言的概念。程序设计语言的设计目的主要是为了支持某种程序设计方法。2023/2/44早期的程序设计早期的高级程序设计语言有FORTROM、COBOL、BASIC等。这一时期由于追求程序的高效率,程序员过份依赖技巧与天份,不太注重程序的结构,。一个典型问题是程序中的控制随意跳转,即不加限制地使用goto语句,这样的程序对阅读者来说是难以理解的,程序员也难以修改程序。结构化的程序设计随着程序规模与复杂性的不断增长,20世纪60年代诞生了结构化程序设计方法。结构化程序设计方法的主要技术是自顶向下、逐步求精,采用单入口/单输出的控制结构。这一程序设计方法的代表语言是Pascal、C、Ado等。2023/2/45

自顶向下是一种分解问题的技术,与控制结构有关。逐步求精指对结构化程序进行分解,最终使其成为三种基本控制结构的组合。结构化程序设计的结果是一个程序最终由若干过程组成,每一个过程完成一个明确的功能。面向对象程序设计

虽然结构化程序设计提高了软件生产率和软件质量,但随着程序规模与复杂性的增长,程序中的数据结构变得与这些数据上的操作同样重要。在大型结构化程序中,一个数据结构可能由许多个过程来处理,修改数据结构将影响到所有相关的过程。在由几百个过程组成的成千上万行的结构化程序中,这种情况变得相当麻烦并且容易产生错误。

2023/2/46

20世纪80年代兴起的面向对象程序设计方法在结构化程序设计的基础上提出了一种新的设计思路,最重要的改变是程序围绕被操作的数据来设计,而不是围绕操作本身。面向对象程序设计以类作为构造程序的基本单位,具有封装、数据抽象、继承、多态化等特点。较有影响的面向对象程序设计语言有Simula、C++、Java等。Java语言是在C++语言基础上发展起来的一种适合分布式计算的新型面向对象程序设计语言,也是目前推广最快的程序设计语言。Java语言将面向对象、平台无关性、稳定性与安全性、多线程等特征集于一身,为用户提供了一个良好的程序设计环境,特别适合因特网的应用开发。与当前迅速发展的因特网应用紧密结合是Java语言成功的关键所在。

2023/2/471.1.2

计算机程序设计方法和语言面向对象与面向过程的区别

早期的编程语言如Fortran语言和C语言基本上都是面向过程的语言,主要是采用数学语言方式编程的语言,其编程的主要思路专注于算法的实现。

传统的面向过程的编程在描述问题时,由两部分组成:数据:描述实体状态的数据结构;过程:操作这些状态数据的程序和步骤。

面向过程编程的一个显著特点是数据与程序的分开。数据是静止的东西,不会自行变化,必须通过过程操作来改变数据,因此,函数调用在面向过程编程中被大量使用。2023/2/48

针对程序结构不清晰而无法维护改进的局面。面向对象编程提出了一种全新的思路,让计算机语言结构像人类思维方式一样简单和清晰。面向对象的软件开发中将世界上的事物均看成对象,任一对象有两个特征:行为与状态。每个对象可以通过自身的行为来改变自己的状态。在面向对象的世界中,通过对象间的协作与交互来运作。由于将对象的操作封闭在对象内,外部要与对象进行交互只能通过给对象发送“消息”,这个消息实际上就是调用对象的某个行为方法,消息中还包括方法的参数。2023/2/49面向对象程序设计的特性封装性

面向对象的第一个原则是把数据和该数据的操作都封装在一个类中,比如说笔记本电脑就是一个类。笔记本电脑这个类有许多属性,有些是静态的(数据),比如:显示屏的亮度,本身的重量;有些是动态的(对数据的操作),比如:可以按下组合键“ctrl+F4”或“ctrl+F5”来调整显示器的亮度,可以卸掉它的外挂光驱来减轻它的重量。

对象是类的一个实例化结果,对象具有类所描述的所有的属性以及方法。比如不同品牌、不同样式的笔记本电脑之间的共同属性就是它们所属的类——笔记本电脑类的属性。只不过类是抽象的东西,而对象是具体的,对象具有它隶属类的所有属性,包括静态的和动态的。2023/2/410

每个对象都有自己的存储空间,可容纳其他对象,或者说通过封装现有的对象,可以产生新型对象。因此,尽管对象的概念非常简单,但是经过封装以后却可以在程序中达到任意高的复杂程度。

每个对象都属于某个类。根据语法,每个对象都是某个“类”的实例。一个类的最重要的特征就是“能将什么消息发给它?”,也就是类本身有哪些操作。面向对象程序设计就是设计好相关的类,类中有静态的域,和动态的方法。继承性继承是在类、子类、以及对象之间自动地共享属性和方法的机制。类的上层可以有父类、下层可以有子类,形成一种层次结构。一个类将直接继承其父类的属性和行为2023/2/411,而且继承还具有传递性,因此,它还将间接继承所有祖先类的属性和行为。

继承最主要的优点是重复使用性,通过继承可以无限繁衍出更多的类,这样的结果可让软件的开发加速,同时可达到程序共享的好处。通过继承可以直接继承系统提供的或他人写作的类,并加以改写,进而得到功能的不断扩充。

继承的另一个优点是在于接口的一致性。当超类繁衍出许多子类时,它的行为接口通过继承可以传给其所有子类。因此可以通过统一的行为接口去访问不同的子类对象的方法,但不同子类中行为的具体实现可能时不一样的。2023/2/412多态性多态是指在表示特定功能时,有多种不同的形态或实现方法。常见的多态形式有两种:方法的重载:即在同一个类中某个方法有多种形态,其方法名相同,但参数不同,所以也称参数多态。方法的覆盖:在子类中重新定义一个与父类有相同形态的方法,这样,在子类中将覆盖从父类继承来的那个方法。多态为描述客观事物提供了极大的能动性。参数多态提供了方法的多种使用形态,方便使用者的调用;而覆盖多态则使得用户可以用同样的方式对待不同的对象,不同的对象可以用它们自己的方式响应同一消息。用户可以通过父类去引用子类的对象,执行方法时则表现出每个子类对象各自的行为。

2023/2/413抽象性这里的抽象有两个层次的含义,一是体现在类的层次设计中,高层类是底层类的抽象表述。类层次设计体现着不断抽象的过程。第二体现在类与对象之间的关系上,类是一个抽象的概念,而对象是具体的。面向对象编程的核心是设计类,但实际运行操作的是对象。类是对象的模板,对象的创建是以类为基础。同一类创建的对象具有共同的属性,但属性值不同。2023/2/4141.2程序设计语言概述Java语言有下面一些特点:简单性Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,只需理解一些基本的概念,就可以用它编写出适合于各种情况的应用程序。Java略去了运算符重载、多重继承等模糊的概念,并且通过实现自动垃圾收集大大简化了程序设计者的内存管理工作。另外,Java也适合于在小型机上运行。

1.2.1Java语言的特色2023/2/415面向对象Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口型。对象中封装了它的状态变量以及相应的方法,实现了模块化和信息隐藏;而类则提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。分布性

Java是面向网络的语言。通过它提供的类库可以处理TCP/IP协议,用户可以通过URL地址在网络上很方便地访问其它对象。

2023/2/416鲁棒性Java在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。它提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误。通过集成的面向对象的例外处理机制,在编译时,Java提示出可能出现但未被处理的例外,帮助程序员正确地进行选择以防止系统的崩溃。另外,Java在编译时还可捕获类型声明中的许多常见错误,防止动态运行时不匹配问题的出现。2023/2/417安全性

用于网络、分布环境下的Java必须要防止病毒的入侵。Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用“特洛伊”木马等欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。体系结构中立

Java解释器生成与体系结构无关的字节码指令,只要安装了Java运行时系统,Java程序就可在任意的处理器上运行。这些字节码指令对应于Java虚拟机中的表示,Java解释器得到字节码后,对它进行转换,使之能够在不同的平台运行。

2023/2/418可移植性

与平台无关的特性使Java程序可以方便地被移植到网络上的不同机器。同时,Java的类库中也实现了与不同平台的接口,使这些类库可以移植。另外,Java编译器是由Java语言实现的,Java运行时系统由标准C实现,这使得Java系统本身也具有可移植性。解释执行Java解释器直接对Java字节码进行解释执行。字节码本身携带了许多编译时信息,使得连接过程更加简单。高性能和其它解释执行的语言如BASIC、TCL不同,Java字节码的设计使之能很容易地直接转换成对应于特定CPU的机器码,从而得到较高的性能。2023/2/419多线程

多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作。通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。动态性

Java的设计使它适合于一个不断发展的环境。在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。并且Java通过接口来支持多重继承,使之比严格的类继承具有更灵活的方式和扩展性。2023/2/4201.2.2Java的应用背景Java语言对软件开发技术的影响Java语言将对未来软件的开发产生影响,可从如下几个方面考虑:软件的需求分析:可将用户的需求进行动态的、可视化描述,以提供设计者更加直观的要求。而用户的需求是各色各样的,不受地区、行业、部门、爱好的影响,都可以用Java语言描述清楚。软件的开发方法:由于Java语言的面向目标的特性,所以完全可以用面向对象的技术与方法来开发,这是符合最新的软件开发规范要求的。

2023/2/421Java语言的动画效果远比GUI技术更加逼真,尤其是利用Internet提供的巨大动画资源空间,可以共享全世界的动态画面的资源。软件最终产品:用Java语言开发的软件可以具有可视化、可听化、可操作化的交互、动画与动作,要它停就停,要它继续就继续,而这是在电影与电视播放过程中难以做到的。其它:使用Java语言对开发效益、开发价值都有比较明显的影响。

2023/2/422Java语言的应用前景

Java语言有着广泛的应用前景,大体上可以从以下几个方面来考虑其应用:所有面向对象的应用开发,包括面向对象的事件描述、处理、综合等。计算过程的可视化、可操作化的软件的开发。动态画面的设计,包括图形图像的调用。交互操作的设计(选择交互、定向交互、控制流程等)。Internet的系统管理功能模块的设计,包括Web页面的动态设计、管理和交互操作设计等。Intranet(企业内部网)上的软件开发(直接面向企业内部用户的软件)。与各类数据库连接查询的SQL语句实现。其它应用类型的程序。2023/2/4231.3程序设计语言简介

用Java可写两种类型的程序:小程序(又叫JavaApplet)和应用程序(Javaapplicatian)。

小程序是嵌入在HTML文档种的Java程序;而Java应用程序是从命令行运行的程序。对Java而言,Java小程序的大小和复杂性都没有限制。由于WWW使小程序的发布十分便利,因此小程序更适合作为Internet上的应用程序。

应用程序(JavaApplication)是可以独立运行的Java程序,有Java解释器控制执行。Applet则不能独立运行,而是被嵌入到Web页中,有Java兼容浏览器控制执行。

2023/2/424

Java程序在编译后生成的不是某种CPU的指令码,而是Java语言特有的字节代码。Java字节代码运行在Java虚拟机上。

每一个操作系统的Java解释器是不同的,但实现Java虚拟机时相同的,这就是Java语言与平台无关的关键所在。Java虚拟机由五部分组成:一组指令集、一组寄存器、一个堆栈、一个无用内存单元收集器、一个方法区域,这五个部分是Java虚拟机的逻辑抽象成分,不倚赖于任何实现技术或组织,但是它们的功能必须在真实机器上以某种来实现。Java虚拟机内存区域不倚赖实现内存的位置,也不要求连续,但要求逻辑的长度固定。

1.3.1Java的虚拟机2023/2/425

Java虚拟机支持240多个字节代码,每个字节代码执行一种基本的CPU运算。Java语言指令集相当于Java语言程序的“汇编语言”,Java语言指令集的一条指令有一个操作码、领个或多个操作数。操作数指定实施的操作,操作数是操作码所需要的参数。Java语言的操作码均为一个字节长,操作数没有限制。

Java虚拟机的寄存器用于保存机器的运行状态。Java虚拟机寄存器有四种:Java语言程序计数器;指向操作数栈顶端的指针;指向当前执行方法的执行环境的指针;指向当前执行方法局部变量的区第一个变量的指针。Java虚拟机是用堆栈来处理数据传递的,它不定义或使用寄存器来传递或接受参数。目的是为了保证指令集的简洁性和实现时的高效性。2023/2/426

Java虚拟机的堆栈有三个区域:局部变量区、执行环境区和操作数区。Java虚拟机的堆栈是运行时刻动态分配的对象存储区域。Java语言可以进行自动的无须内存单元的收集,程序无须显示释放占有的内存空间,无须内存单元自动回收的算法倚赖于虚拟机最终实现的硬件环境。

Java虚拟机的方法区是编译后的代码区域,包含方法代码、符号表等。

2023/2/4271.3.2Java的运行环境的配置Java不仅提供了一个丰富的语言和运行环境,而且还提供了一个免费的Java开发工具集(JavaDevelopersKits,简称JDK,也称SDK)。编程人员和最终用户可以利用这些工具来开发Java程序或调用Java内容。

SUN的Java不仅提了一个丰富的语言和运行环境,而且还提了一个免费的Java开发工具集(SDK)。开发人员和最终用户可以利用这个工具来开发Java程序。SDK简单易学,可以通过任何文本编辑器编写Java源文件,然后在DOS状况下利通过javac命令将Java源程序编译成字节码,通过Java命令来执行编译后的Java文件。

2023/2/428SDK的另一个显著特点是随着Java(J2EE、J2SE以及J2ME)版本的升级而升级。但它的缺点也是非常明显的就是从事大规模企业级Java应用开发非常困难,不能进行复杂的Java软件开发,也不利于团体协同开发。建立Java开发环境JDK开发环境中常用工具介绍在Java环境中的Java工具主要有:*appletviewer

小应用程序浏览器*java解释器*javac

编译器*javah

头文件生成器*javadocAPI

文档生成器*javap

类文件反汇编器*sdbJava语言调试器2023/2/4291.3.1Java的虚拟机目前可供开发人员选择得Java语言开发工具有很多,例如:Sun公司的SDK(命令行方式的)Java语言编辑器,用Java语言开发的图形化界面的JavaWorkShop,Symmatec公司的VisualCafé,微软公司的VisualJ++,Borland公司的JBuilder等等。开发人员选择开发工具可以根据以下原则:开发界面是否友好,编译效率是否高,是否有可视化的调试器,能否在浏览器中调试Java语言小程序,能否为使用者完成一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论