Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用...

35
Java软件设计基础 1. Java 1. Java 概述 概述 PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Transcript of Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用...

Page 1: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

Java软件设计基础

1. Java1. Java概述概述

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 2: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

•• 课程参考书目课程参考书目– 《Java程序设计及应用开发教程》,虞益诚主编,科学出版社– 《Java教程》,Sharon Zakhour,人民邮电出版社– 《Introduction to Java Programming》,Y.Daniel Liang, 机械工业出版社– 《Java编程思想》, Bruce Eckel,机械工业出版社

•• 课程安排课程安排– 平时成绩,形式为上机作业;– 考试成绩,考试形式为闭卷笔试。

•• 其他信息其他信息– Email: [email protected]– Homepage: http://lab508.ustc.edu.cn/java/index.html

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 3: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

1.1 Java发展与特点

•• 计算机程序设计语言的发展与分类计算机程序设计语言的发展与分类– 机器语言

• 不需要翻译即由计算机直接执行的指令叫做机器指令。这些指令的集合叫做机器语言。

– 汇编语言• 是一种面向机器的程序设计语言,它用符号表示机器指令。

– 高级语言• 其语法和结构更类似普通英文,且由于远离对硬件的直接操作,易于掌握。

– 面向对象程序设计• 面向对象程序设计语言可以直观的反映客观世界的真实表象,使软件开发人员可运用人类认识事物所采用的一般思维方式来进行软件开发,与自然语言差距最小,是当今软件开发与应用的主流技术。

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 4: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

•• JavaJava起源与发展起源与发展– 1991年由美国Sun公司开发的具有平台无关性的语言——Oak。1992年10月更名为Java。Java和Internet迅速融合并互相推动快速发展,Java语言已由最初的版本发展到今天的1.6。

•• JavaJava的技术现状的技术现状– JDK与J2SE

• JDK是Sun公司发布的Java最初版本,自从Java 1.2发布后,相应的JDK改名为J2SE。主要目的是为台式机和工作站提供一个开发和运行的平台。

– J2ME• 主要面向消费电子产品,例如掌上电脑、手机等。

– J2EE• 用于开发分布式的企业级大型程序。

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 5: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

1.2 Java运作机制

语言翻译程序的作用示意图

•• 语言翻译的一般过程语言翻译的一般过程

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 6: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

•• JavaJava平台是一种运行在其他基于硬件平台之上的纯软件平平台是一种运行在其他基于硬件平台之上的纯软件平台。台。– Java应用程序编程接口(API:Application Programming Interface)– Java虚拟机(JVM:Java Virtual Machine)

• JVM可以在任何处理器上安全、兼容地执行Java应用程序。• JVM可建立于不同的硬件系统、不同的操作系统平台。• Java程序被翻译为与机器无关的字节码文件(*.class文件),再由JVM转换成某种处理器的专用代码,因此可以达到“一次编写,处处运行”的理想。

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 7: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

– Java虚拟机

•• JVMJVM的执行过程的执行过程– 加载代码、校验代码、代码执行

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 8: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

1.3 Java程序的分类

•• Java ApplicationJava Application– 用来开发命令行程序、窗体程序、服务器端程序等。

•• Java AppletJava Applet– 是一种嵌入到Web页面的网络应用程序,由浏览器内部的Java解释器来解释运行。

•• Java Java ServletServlet– 运行于Web服务器端的 Java程序,可以与客户端的Applet或者HTML页面进行交互。

•• JSPJSP– 用于生成动态网页,基于Servlet技术,在HTML文件中加入Java程序片段(Scriptlet)和JSP标记。可实现程序与页面格式控制的分离。

•• …………

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 9: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

1.4 Java运行平台

•• JavaJava技术既是一种编程语言,也是一个平台。技术既是一种编程语言,也是一个平台。– Java运行时环境(JRE:Java Runtime Environment)。– 许多主要的浏览器都提供的Java解释器和运行时的环境。– 其他工具,如文档生成器、文件打包工具等。

•• JavaJava语言规范和语言规范和Java APIJava API定义定义JavaJava的标准。的标准。– Java语言规范是一种语言的技术定义,包括语法和语义。

• 完整的Java语言规范可在http://java.sun.com/docs/jls上找到。

– Java API包括用于开发Java程序准备的类和接口。

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 10: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

•• JDKJDK系统的安装系统的安装– 获取与安装

• http://java.sun.com/javase/downloads.jsp• 运行jdk-6u7-windows-i586-p.exe安装

– 系统路径与主要文件• Java编译器:javac.exe

–用于将Java源代码文件(*.java)编译成能被Java解释器运行的类字节码文件(*.class)。

• Java字节码解释器,即JVM:java.exe–用于Java程序的解释执行,直接从类字节码文件执行Java应用程序。

• Java Applet浏览器:appletviewer.exe–是一种执行嵌入HTML文件上Java Applet的Java浏览器。

• ……

– JDK由开发和测试Java程序的独立程序组成,从命令行调用。

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 11: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

•• JDKJDK环境变量设置环境变量设置– Path设置

• Java编译器、解释器等位于Java安装目录的bin文件夹中,为了能在任何目录中使用以上工具,应在系统特性中设置Path。

– ClassPath设置• 该设置指明Java虚拟机要装载类的路径。为了使编译程序能够找到用户定义的类和系统类所在的包,需要将用户类所在的目录和系统类所在的包放入到ClassPath变量中。

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 12: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

1.5 Java程序开发

•• JavaJava程序开发步骤程序开发步骤– 编辑源程序:*.java– 编译源程序得到字节码文件:*.class– 运行程序

• Java Application为解释运行• Java Applet需通过浏览器加载运行

传统语言的运行机制

Java语言的运行机制

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 13: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

•• Java ApplicationJava Application的开发的开发– 编写Java源程序

– 编译和运行Java源程序• 使用javac.exe来编译,java.exe来运行。

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 14: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

– 程序解析• Java语言严格区分大小写• 源文件的命名规则• 类名• 方法名• 包名• 接口名• 变量名• 常量名

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 15: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

– 定义类• 类定义最基本的形式是:

• 大括号括起的内容就是类体,即类的属性和方法。

– main方法• 一个应用程序必须有且只有一个main方法,它是应用程序的入口点。• main方法接受单一参数:String类型的元素的数组,该数组是一种机制,运行时系统通过它把消息传递给应用程序。数组中的每个字符串称为命令行参数(command-line argument)。

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 16: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

•• Java AppletJava Applet开发开发– 编写Applet源程序

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 17: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

– 编写相应的HTML文件

– 编译Applet源程序• 使用javac.exe来编译

– 运行Applet小应用程序• 使用appletviewer• 在浏览器中直接打开

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 18: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

1.6 Java开发工具简介

•• JavaJava开发工具是为快速开发开发工具是为快速开发 JavaJava程序提供集成开发环境程序提供集成开发环境(IDE)(IDE)的软件。的软件。– Borland公司——JBuilder– IBM公司——Eclipse、Visual Age for Java– Sun公司——NetBeans、Java WorkShop、JCreator、Sun Java Studio– Symantec公司——Visual Café for Java– Oracle公司——JDeveloper– JetBrains公司——IntelliJ IDEA– EBA公司——WebLogic Workshop

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 19: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

1.7 JCreator

代码视图

文件视图

类.包.属性视图输出视图编译视图

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 20: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

附录

•• JavaJava的技术现状的技术现状**•• JavaJava语言的特点语言的特点**•• JVMJVM执行过程的特点执行过程的特点**•• JavaJava平台提供特性平台提供特性**•• JavaJava与与C/C++C/C++的比较的比较**

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 21: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

Java的技术现状*

•• J2EE/J2SE/J2MEJ2EE/J2SE/J2ME的应用领域的应用领域

Java Virtual Machine CVM KVM Card VM

Java 2Enterprise

Edition(J2EE)

Java 2StandardEdition(J2SE)

OptionalPackages

OptionalPackages

Java Card APIsCDC

Foundation Profile

RMIPersonalProfiles

MID Profile

CLDC

J2ME

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 22: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

– Optional Packages• 一个或多个APIs(应用程序编程接口)的集合,在Java平台上,它们是可用的,并且可能在兼容平台上也被支持。 随着时间推移,Optional Packages 可 能 因 为 市 场 需 要 而 变 成 必 需 的 。CDC:Connected Device Configuration。对应于那些有电源的,电力充裕,较大的设备。例如:电视机,冰箱等。

– CVM (C Virtual Machine),KVM(K Virtual Machine)• KVM和CVM均可被看作是一种Java虚拟机,是JVM的子集,在功能上都是JVM的缩减版。这两类虚拟机的适用范围并不相同,简单地说,CVM的功能比KVM功能更为强大。 KVM是sun专门为使用16/32位RISC/CISC微处理器或控制器,并其可用内存为160kb~512kb的的设备而开发的。

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 23: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

– CLDC: Connected, Limited Device Configuration• 对应于主要使用电池,小型的设备,例如:手机,pda等。

– MID(Mobile Information Device) Profile• 移动信息设备简表,定义了移动信息设备的类型和提供相关的API集合, MIDP所定义的功能更加面向用户,而且比CLDC更高级。

– Foundation Profile(基础简表)• 提供除了用户界面以外J2SE所能够提供的标准类库。

– RMI(Remote Method Invocation)• 远程方法调用。

– Java卡• 是Java平台中最小的子集,也是一种特殊的智能卡,智能卡是一种嵌入计算机芯片的卡片。

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 24: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

Java语言的特点*

•• 面向对象性面向对象性– 面向对象其实是现实世界模型的自然延伸。现实世界中任何实体都可以看成是对象,对象之间通过消息相互作用。– 传统的面向过程编程语言:中心是过程,驱动是算法。– 面向对象的编程语言:中心是对象,驱动是消息。

•• 简单便捷性简单便捷性– 系统精简,入门迅速,编写的代码更少。

•• 平台无关性平台无关性– 平台(Platform)是程序在其中运行的硬件或软件环境,大多数平台可以被描述为操作系统和底层硬件的组合。– 计算机只能识别、运行本身的机器语言(0,1构成的指令系统)。因此程序设计语言程序需要通过语言翻译程序将其映射成等价的机器码,这与平台环境紧密相关。

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 25: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

•• 语言健壮性语言健壮性– Java是一种强制类型语言,在编译运行时对程序进行严格的检查,以防止不匹配问题的发生;同时自动垃圾回收功能有助于避免内存泄露,增加了Java的健壮性。

•• 运作安全性运作安全性– Java语言在运行程序时严格检查数据的访问权限,不允许网络上的应用程序修改本地数据;– 下载到用户端的字节码只有被核实后才能由Java解释器执行,而执行过程中还要通过阻止对内存的直接访问来提高安全性;– Java提供加密技术与多种安全网络协议。

•• 系统移植性系统移植性– Java的平台无关性是该类应用程序可方便的移植到其他计算机上运行的基础;

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 26: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

– Java的编译器由Java语言实现,解释器由Java语言和标准C实现,使得Java语言系统自身就具备了可移植性。

•• 动态扩展性动态扩展性– 可以在本地或网上动态的加载各种类库,在执行过程中可以随意的增加新方法、实例变量等,运行中的程序只有在需要时才会加载相应的模块,便于扩展。

•• 程序高性能程序高性能– Java字节码技术可快速的将编辑的Java语言转换成高性能的机器码来执行;– 相应的自动寄存器分配与编译器对字节码的一些优化技术可以生成高质量的代码;– JVM的改进和“即时编译”(Just in Time)技术的出现使得Java的执行速度有了更大的提高。

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 27: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

•• 多线程机制多线程机制– 线程又被称为轻量进程,是比传统进程更小的并且可以并发执行的单位。多个线程可以共用一个内存区域,共享同一组系统资源,其间通信和切换的系统开销要远远小于进程。– Java环境本身就是多线程的,若干个线程运行,负责必要的无用单元回收、系统维护等系统级操作;– Java提供了一个Thread类和一组内置方法对线程进行实时并发控制。

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 28: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

JVM执行过程的特点*

•• 多线程多线程– 支持多个线程同时运行,这些线程可以独立的执行Java代码,处理公共数据区和私有堆栈中的数据。

•• 动态连接动态连接– 动态连接使得Java程序适合在网上运行

•• 异常处理异常处理– 提供了可靠的异常处理

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 29: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

Java平台提供特性*

•• JavaJava平台的每个完整实现都能提供如下特性:平台的每个完整实现都能提供如下特性:– 开发工具

• 开发工具提供进行编译、运行、监视、调试应用程序和编写应用程序文档所需的所有功能。

– API• 提供Java编程语言的核心功能,提供大量已编写好的类。

– 部署技术• JDK软件提供标准机制,用于把应用程序部署给最终用户。

– 用户界面工具包• Swing和Java 2D工具包使创建复杂的图形用户界面称为可能。

– 集成库• 支持数据库访问和远程对象的操纵等。

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 30: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

Java与C/C++的比较*

•• 概述概述– Java是由C++发展而来,保留了C++的大部分内容,其编程方式类似于C++,但是摒弃了C++的诸多不合理之处,从根本上解决了C++的固有缺陷。使得Java句法更清晰、规模更小、更易学,同时更趋于健壮性、安全性和平台无关性。

•• 区别区别– 全局变量

• C++将函数和变量定义为全局的,而不加封装,增加了程序的负担,并且往往会由于使用不当而造成系统的崩溃。• Java是完全面向对象的语言,类将方法和数据封装在其内,不能在所用的类之外定义程序的全局变量,只能通过在一个类中定义公用、静态的变量来实现一个全局变量,使得其它类可以访问和修改该变量。这种完善的包装保证了系统的安全性。

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 31: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

– goto语句• goto语句一般用于无条件转移子程序和多结构分支技术,是C++中的合法语句,造成了程序结构的混乱,不易理解。• Java不提供goto语句,使得程序更简洁易读,增强了程序的健壮性。

– 指针• 指针是C++语言中最灵活也最容易出错的数据类型,易出现由于指针误操作而导致的系统崩溃,同时指针操作内存时也经常出错。• Java没有指针的概念,更有利于程序的安全。

– 内存管理• C++语言中必须通过程序释放内存资源,增加了程序设计者的负担,再次释放已释放的内存块或释放未分配的内存块会造成系统崩溃,忘记释放不再使用的内存块也会逐渐耗尽系统资源。• Java自动进行内存回收操作,当一个对象不再被用到时,无须使用内存回收器,只需要给它加上标签以示删除。无用内存的回收器在后台运行,利用空闲时间工作,保证了系统资源的完整性,避免了内存管理不周而引起的系统崩溃。

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 32: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

– 数据类型的一致性• 在C++语言中,不同的平台上,编译器对简单数据类型分别分配不同的字节数,导致了代码数据的不可移植性。• 在Java中,采用基于IEEE标准的数据类型,无论任何硬件平台上对数据类型的位数分配总是固定的。

– 类型转换• 在C++中,会出现数据类型的隐含转换,涉及到自动强制类型转换,使得不安全因素大大增加。• Java中系统要对对象的处理进行严格的相容性检查,防止不安全的转换。如果需要,必须由程序显式进行强制类型转换。

– 头文件• 在C++语言中使用头文件声明类的原型和全局变量及库函数等,使得在大系统中对头文件的维护非常困难。• Java不支持头文件,类成员的类型和访问权限都封装在类中,运行时系统对访问进行控制,防止非法访问。

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 33: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

– 结构和联合• C++中用结构和联合来表示一定的数据结构,其成员的公有性带来了安全隐患。• Java不支持结构和联合,通过类把数据结构及对该数据的操作封装在类中。

– 预处理• C++在编译过程中都有一个预编译阶段,即预处理器,为开发人员提供了方便,但也增加了编译的复杂性。• Java允许预处理,但不支持预处理器功能,提供import语句实现类似的功能。

– 多重继承• C++支持多重继承,允许许多父类派生一个子类,虽然功能强大,但使用复杂,而且会引起许多麻烦,编译程序实现也很不易。• Java不支持多重继承,但允许一个类实现多个接口,即实现了C++的多重继承功能,又避免了C++的缺陷。

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 34: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

– 操作符重载• 操作符重载被认为是C++的突出特征。• 为了保持Java语言尽可能的简单,Java不支持操作符重载。

– 函数• 在C中,代码组织在函数中,函数可以访问程序的全局变量;C++增加了类,提供了类方法,但由于C++仍然支持C,所以C++程序中仍然可以使用C的函数,结果导致函数和方法混合使用,使得程序比较混乱。• Java没有函数。作为一种比C++更纯的面向对象的语言,强迫开发人员把所有例行程序包括在类中,可以更好的组织编码。

– 字符串• C++不支持字符串变量,使用“Null”终止符代表字符串的结束。• Java字符串类作为Java语言的一部分定义,而不是作为外加的延伸部分,在整个系统中建立字符串和访问字符串元素的方法是一致的。

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Page 35: Java软件设计基础 - staff.ustc.edu.cnstaff.ustc.edu.cn/~renkx/chp1.pdf · PDF 文件使用 "pdfFactory Pro" 试用版本 ... – 1991年由美国Sun公司开发的具有平台无关性的

School of Computer Science and Technology

快快较较C/C++C/C++略慢略慢运行速度快慢运行速度快慢

允许多重继承允许多重继承允许单一继承允许单一继承是否具备继承性能是否具备继承性能

是是否,使用对象引用代替指针否,使用对象引用代替指针是否有指针类型是否有指针类型

否,需根据计算机平台改变程否,需根据计算机平台改变程

序序是是是否跨平台是否跨平台

是是否,产生具有跨平台特性的字否,产生具有跨平台特性的字

节码节码编译后是否产生机器代码编译后是否产生机器代码

否,编译式否,编译式是是是否直译式是否直译式

C/C++C/C++JavaJava效用效用

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn