ch02 (15)教师用书配套课件
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2018年10月30日
5
简单性
结构较小。Java语言通过提供最基本的方法来完成指定的任务, 只需理解一些基本的概念,就可以编写出适合于各种情况的应用 程序。Java略去了运算符重载、多重继承等模糊的概念,并且通 过实现自动垃圾回收,大大简化了程序设计者的内存管理工作。 另外,Java也适合于在小型机上运行,它的基本解释器及类的支 持只有40KB左右,加了标准类库和线程的支持也只有215KB左右。 用户容易熟悉掌握。Java使用了许多与C和C++同样的语言结构。 但是又把C和C++中很少使用的、容易出错的特征去掉了。Java 略去了运算符重载、多重继承等模糊的概念;不支持goto语句, 代之以提供break和continue语句以及异常处理;不使用主文件, 它免去了预处理程序;由于Java是面向对象的,所以C中的结构 struct和union也已被删去。
2018年10月30日
11
解释性
Java 解释器直接对Java字节码进行解释执行。 字节码本身携带了许多编译时信息,使得连接 过程更加简单。 Java编译程序把Java源程序译成字节码,而不 是通常的汇编码或机器码,这是Java跨平台特 点的关键所在。为了实际运行Java程序,还要 使用解释程序来执行编译出来的字节码,所以 Java的前一阶段是编译,后一阶段是解释。
2018年10月30日
7
分布性
Java从设计上就支持网络应用,它是分布式语言, Java接口和Java类是以包的形式分组存放。Java语言 中专门有一个支持网络的包,通过这个包中的 类,支持各种层次的网络连接。例如,Java包括一个 支持HTTP和FTP等基于TCP/IP协议的子库。因此,用 户可以通过URL地址在网络上很方便地访问其他远程 对象,其访问方式与访问本地文件(local))系统一 样简单。Java也以Socket类支持可靠的流(Stream) 网络连接,所以可以产生分布式的客户机和服务器, 这比原来的客户机/服务器方式进了一步。
2018年10月30日 9
体系结构中立
Java编译程序生成与体系结构无关的字节码, 这种字节码适合各种体系结构。这种方法的优 点是允许Java应用能在任何系统上运行,只要 安装了Java运行系统,Java程序就可在任意的 处理器上运行。这些字节码指令对应于Java虚 拟机中的表示,Java解释器得到字节码后,对 它进行转换,使之能够在不同的平台运行。目 前,Java编写的代码经编译后的之间代码文件 可以在Solaris、Windows、UNIX、Linux和 MacOS等不同的操作系统上运行。
2018年10月30日
19
类型转换。在C、C++中,可以通过指针进行任意的类型转换, 常常带来不安全性,而Java中,运行时系统对对象的处理要进行 类型相容性检查,以防止不安全的转换。 在C中,程序员通过库函数malloc()和free()来分配和释放内存, C++中则通过运算符new和delete来分配和释放内存。再次释放 已释放的内存块或未被分配的内存块,会造成系统的崩溃;同样, 忘记释放不再使用的内存块也会逐渐耗尽系统资源。而在Java中, 所有的数据结构都是对象,通过运算符new为它们分配内存堆。 通过new得到对象的处理权,而实际分配给对象的内存可能随程 序运行而改变,Java对此自动地进行管理并且进行垃圾收集,有 效防止了由于程序员的误操作而导致的错误,并且更好地利用了 系统资源。
2018年10月30日 13
高性能
Java比C语言写的程序执行起来平均慢20倍。不过这个 速度对交互式运行、图形用户界面和基于网络的应用 来讲是适当的,因为在这些应用中,常常是有空闲的, 等待用户做某些事,或者等待来自网络上的程序或数 据,这时Java可以在运行时直接将目标代码翻译成机 器指令。 有些情况下性能是很重要的。为了支持这些情况,Jit (Just-in-time)编译程序能在运行时把Java字节码翻 译成特定CPU的机器代码。Java字节码格式设计时考 虑到这些JIT编译程序的需要,所以生成机器代码的过 程相当简单,它能产生较好的代码,其字节码转换到 机器码的性能与C或C++的几乎一样。
2018年10月30日
6
面向对象
Java是一个面向对象的语言,与C++言不同的是,Java是从基础 就设计成面向对象的。Java中的绝大多数成分都是对象,只有简 单数、字符和布尔类型是例外。虽然Java看起来设计得很像C++, 但是Java移去了C++的许多复杂性。 Java语言不支持类似C语言那样的面向过程的程序设计技术,它 的设计集中于对象及其接口,它提供了简单的类机制以及动态的 接口模型。对象中封装了它的状态变量以及相应的方法,实现了 模块化和信息隐藏,而类则提供了对象的原型,通过继承机制, 子类可以使用父类所提供的方法,这样就实现了代码的继承及重 用。因此,单从面向对象的特性来看,Java类似于SmallTalk,但 其它的特性、尤其是适用于分布式计算环境的特性远远超越了 SmallTalk。
2018年10月30日 10
安全性
不支持指针。一切对内存的访问都必须通过对象的实例变量来实 现。Java编译程序不处理存储安排决策,所以程序员不能通过查 看声明去猜测类的实际存储安排。编译的Java代码中的存储引用 在运行时由Java解释程序决定实际存储地址。 设置访问权限。为了防止无效字节码程序造成的危害,如删除所 有文件、未经用户许可在网上发送本地信息等,Java虚拟机让用 户可配置访问权限,如拒绝本地写入、拒绝向其它站点和网络访 问等。 语言功能和一些浏览器本身提供的功能相结合。Java运行系统使 用字节验证过程来保证装载到网络上的代码不违背任何Java语言 限制。当然,没有人能保证Java程序不包含任何形式的恶意代码。 Sun公司所能保证的是,Java使得写诈骗软件更加困难。 虚拟机的选择。大多数安全性措施都靠无病毒的Java虚拟机,所 以Java虚拟机的取得要慎之又慎。Sun、IBM等公司的Java虚拟机 都经过了彻底检查,下载和操作通常是安全的。
2018年10月30日
15
动态性
Java的设计使它适合于一个不断发展的环境。在类库中可以自由地加入 新的方法和实例变量而不会影响用户程序的执行,这是C++语言进行面 向对象程序设计所无法实现的。 Java编译器不是将对实例变量和成员函数的引用编译为数值引用,而是 将符号引用信息在字节码中保存下传递给解释器,再由解释器在完成动 态连接类后,将符号引用信息转换为数值偏移量。这样,一个在存储器 生成的对象不在编译过程中决定,而是延迟到运行时由解释器确定的。 这样,对类中的变量和方法进行更新时就不至于影响现存的代码。解释 执行字节码时,这种符号信息的查找和转换过程仅在一个新的名字出现 时才进行一次,随后代码便可以全速执行。在运行时确定引用的好处是 可以使用已被更新的类,而不必担心会影响原有的代码。如果程序连接 了网络中另一系统中的某一类,该类的所有者也可以自由地对该类进行 更新,而不会使任何引用该类的程序崩溃。 如果系统运行Java程序时遇到了不知怎样处理的程序,Java能自动下载 所需要的功能程序。
3
教学过程
Java语言的特点 Java的数据类型 运算符 条件语句 循环语句 分支语句 Java中的强制类型转换 Java类技术基础 Java高级类技术 多线程技术
2018年10月30日
4
2.1 语言特点
简单性
面向对象 分布性 健壮性 体系结构中立 安全性 解释性 可移植性 高性能 多线程 动态性 丰富的类库 类的装载 与C和C++语言的异同
第2章 JAVA语言基础
教学目标
教学重点
教学过程
2018年10月30日
1
教学目标
熟悉和了解Java语言的特点 熟悉和掌握Java的数据类型、运算符、 控制语句 熟悉和掌握Java的类和多线程
2018年10月30日
பைடு நூலகம்
2
教学重点
Java的数据类型 运算符 Java的控制语句 Java类
2018年10月30日
2018年10月30日 18
与C和C++语言的异同
指针。指针是C、C++中最灵活,也是最容易产生错误的数据类 型。由指针所进行的内存地址操作常会造成不可预知的错误,同 时通过指针对某个内存地址进行显式类型转换后,可以访问一个 C++中的私有成员,从而破坏安全性,造成系统的崩溃。而Java 对指针进行完全的控制,程序员不能直接进行任何指针操作,例 如把整数转化为指针,或者通过指针释放某一内存地址等。同时, 数组作为类在Java中实现,良好地解决了数组访问越界这种在C、 C++中不作检查的错误。 预处理 。C、C++中用宏定义来实现的代码给程序的可读性带来 了困难。在Java中,不支持宏,它通过关键字final来声明一个常 量,以实现宏定义中广泛使用的常量定义。 goto 。Java不支持C、C++中的goto语句,而是通过例外处理语 句try、Catch、final等来代替C、C++中用goto来处理遇到错误时 跳转的情况,使程序更可读且更结构化。
2018年10月30日
12
可移植性
与平台无关的特性使Java应用程序可以 移植到配备了Java解释器和运行环境的 任何计算机系统上。同时,Java的类库 中也实现了与不同平台的接口,使这些 类库可以移植。另外,Java编译器是由 Java语言实现的,Java运行时系统由标 准C实现,这使得Java系统本身也具有可 移植性。
2018年10月30日
16
丰富的类库
语言包。提供的支持包括字符串处理、多线程处理、例外处理、 数学函数处理等,可以用它简单地实现Java程序的运行平台。 实用程序包。提供的支持包括哈希表、堆栈、可变数组、时间和 日期等。 输入输出包。用统一的“流”模型来实现所有格式的I/O,包括文 件系统、网络、输入/出设备等。 抽象图形用户接口包实现了不同平台的计算机的图形用户接口部 伯,包括窗口、菜单、滚动条、对话框等,使得Java可以移植到 不同平台的机器。 网络包。支持Internet的TCP/IP协议,提供了与Internet的接口。 它支持URL连接,WWW的即时访问,并且简化了用户/服务器模 型的程序设计。
2018年10月30日
17
类的装载
Class Loader通过将本机类与网络资源类 的名称分开来保持安全性,因为调入类 时总要经过检查,这样避免了特洛伊木 马现象的出现。从网络上下载的类被调 进一个与源相关的私有的名字域,当一 个私有类访问另一个类时,build-in(本 机类)首先被检查,然后检查相关的类。 这样就避免了破坏本机类情况的出现。
2018年10月30日 14
多线程
Java程序通过流控制来执行程序流,程序中单个顺序的流控制称 为线程,多线程则指的是在单个程序中可以同时运行多个不同的 线程执行不同的任务。多线程带来的的好处是比C和C++更键壮, 而且同步机制保证了对共享数据的正确操作(即实时控制),通 过使用多线程,程序设计者可以分别用不同的线程完成特定的行 为,而不需要采用全局的事件循环机制,这样就很容易地实现网 络上的实时交互行为。 多线程程序设计大大提高了程序执行效率和处理能力。对程序员 来说,用C或C++语言编写处理多线程的代码可能是很麻烦的事。 Java语言使具有线程的程序设计很容易,Java对线程提供内部语 言支持,Java中的Thread类和Runnable接口使程序员很容易开发 出多线程的应用程序。
2018年10月30日
8
健壮性
Java是一个强类型语言。它具有扩展编译时检查潜在 的类型不匹配问题的功能。这使得Java在编译和运行 程序时,都要对可能出现的问题进行检查,以消除错 误的产生。它提供自动收集垃圾来进行内存管理,防 止程序员在管理内存时容易产生的错误。通过集成的 面向对象的例外处理机制,在编译时,Java揭示出可 能出现但未被处理的例外,帮助程序员正确地进行选 择以防止系统的崩溃。另外,Java在编译时还可捕获 类型声明中的许多常见错误,防止动态运行时不匹配 问题的出现。另外,Java还实现了真数组,避免了覆 盖数据的可能。这个功能特征大大缩短了开发Java应 用程序的周期。