Java程序设计教程_第1页
Java程序设计教程_第2页
Java程序设计教程_第3页
Java程序设计教程_第4页
Java程序设计教程_第5页
已阅读5页,还剩306页未读 继续免费阅读

付费阅读全文

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

文档简介

普通高等教育“十三五”规划教材

Java程序设计教程

何受倩吴道君严梅主编

曾昊陈方昕钱英军副主编

汤庸周雅兰主审

内容简介

本书以项目为驱动,将项目分解成多个任务,以任务描述的形式引入问题进而解

决问题。全书共分15个项目,主要内容包括:Java概述及开发环境搭建,Java语言编

程基础,数组与方法,Teacher类与对象的创建与使用,类的继承与多态,抽象类、接

口和包,异常捕获,Java中I/O的应用,图形用户界面编程,多线程,Java网络编程,

用Java集合来实现学生信息的管理,使用JDBC实现超市进销存管理,API帮助文档的

使用及MyEclipse调试入门。

本书知识点详尽,内容全面且循序渐进,适合作为普通高等院校计算机类专业的

基础教材,也可作为使用Java语言的相关工作人员及初学者的自学参考书。

图书在版编目(CIP)数据

Java程序设计教程/何受倩,吴道君,严梅主编.—2版.—北京:

中国铁道出版社有限公司,2020.6

普通高等教育“十三五”规划教材

ISBN978-7-113-26669-1

Ⅰ.①J…Ⅱ.①何…②吴…③严…Ⅲ.①JAVA语

言-程序设计-高等学校-教材Ⅳ.①TP312.8

中国版本图书馆CIP数据核字(2020)第085936号

书名:Java程序设计教程

作者:何受倩吴道君严梅

策划:韩从付编辑部电话:(010)-63549508

责任编辑:陆慧萍

封面设计:刘颖

责任校对:张玉华

责任印制:樊启鹏

出版发行:中国铁道出版社有限公司(100054,北京市西城区右安门西街8号)

网址:http:///51eds/

印刷:三河市航远印刷有限公司

版次:2016年9月第1版2020年6月第2版2020年6月第1次印刷

开本:787mm×1092mm1/16印张:19.25字数:411千

书号:ISBN978-7-113-26669-1

定价:49.80元

版权所有侵权必究

凡购买铁道版图书,如有印制质量问题,请与本社教材图书营销部联系调换。电话:(010)63550836

打击盗版举报电话:(010)51873659

前言

Java语言是TIOBE编程语言排行榜长期排名第一的编程语言,是目前流行的编

程语言之一。它在网络程序设计和应用领域已经取得了巨大的成功,同时也被广泛应

用在电子商务、手机和嵌入式芯片领域。Java语言的开放性和跨平台分布式特性,使

全球数以万计的Java开发公司可以得到相互兼容的产品。

Java继承了C++语言面向对象技术的核心,同时封装了C语言中容易引起错误的

指针,并以接口取代多重继承等,降低了程序员出错的风险。同时还增加了垃圾回收

器功能,用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管

理而担忧。它将源代码编译成二进制字节码,然后依赖各种不同平台上的虚拟机来解

释执行字节码,从而实现了“一次编译、到处运行”的跨平台特性。所以,尽管其在

桌面应用程序的开发方面略显不足,但是在网络应用和移动嵌入应用方面,Java平台

可驾驭从智能卡、小型消费类器件到大型数据中心的各种应用。

Java是一个纯粹的面向对象的程序设计语言,很好地体现了面向对象的设计思

想,因此,使用Java作为基础教学语言也越来越得到重视。

关于本书的说明

目前市面上有很多Java教材,我们也选用了部分教材作为参考,但发现部分内

容过于理论化、不够吸引人,案例与案例之间联系不紧密。本书编者从事多年的Java

程序教学,积累了一定的教学经验,认为有必要编写一本通俗易懂,既符合认知规律,

又有方法论的教材。

本书以项目为驱动,并将一个项目分解成多个任务,以任务描述的形式引入问题,

围绕解决任务描述中引入的问题而展开。要解决问题,首先要具备一定的理论知识,

本书将这部分内容放在【必备知识】部分,我们本着“够用”的原则,精益求精,避

免长篇大论。有些相关的补充知识,在【知识链接】中阐述。介绍完要用到的相关知

识点后,给出解决任务的【解题思路】,这部分内容按照解决问题的步骤有序展开。

有了解题的思路后就可以编写程序代码,【任务透析】给出了源程序代码。部分任务

还有【课堂提问】和【现场演练】环节。同时,每个项目后面还配有【思考练习】和

【上机实训】,并配有参考答案,上机实训中对实训目的、实训内容都有明确的要求,

以加强学生对知识点的掌握和强化编程能力。采用这样层层紧扣的环节来完成每一个

任务的学习,当学习完几个任务后,项目所要求掌握的知识点都掌握了,也就能完成

一个综合性较强的小项目。

本书采用以项目为驱动、问题分解的方法,以达到简化复杂问题的目的,让初学

者更易学习和掌握,相关联的几个任务完成后组合成一个小项目,这种系统化的学习

方法是比较理想的。同时,我们尽可能选择一些比较有代表性的任务,以提高学生的

学习兴趣。

本书共有15个项目,其中,项目一主要介绍Java开发平台的搭建;项目二、三

是Java语言基础,主要介绍Java基本语法、程序等基本结构以及数组和方法;项目

四~六主要介绍面向对象三大特征——继承、多态、封装,以及抽象类与接口的应用;

项目七~十一是Java高级应用部分,主要有异常、JavaI/O、图形用户界面编程、多

线程和网络编程;项目十二、十三是类集与数据库编程,使用JDBC实现超市进销存

管理;项目十四、十五介绍API帮助文档的使用和MyEclipse调试技巧。大多数教材

并没有介绍API文档的使用和调试技巧,而事实上,掌握API帮助文档的使用和调试

技巧对学生编程能力的提高是非常有帮助的,同时也能提高他们的自学能力和自我解

决问题的能力。所谓“授之以鱼不如授之以渔”,在信息科技发展如此迅速的今天,

软件的更新换代是非常快的,学习方法和自学能力尤为重要。

本书的重点是面向对象开发技术。软件开发人员除了要有良好的面向对象的程序

设计思想,还要养成规范的代码编写习惯,以及熟练掌握常用的编程工具,并具有团

队合作精神等。

本书由何受倩、吴道君、严梅任主编,曾昊、陈方昕、钱英军任副主编,编写分

工如下:项目一、五、十、十一、十四由何受倩编写;项目二由黄静编写;项目三由

钱英军编写;项目四由钱英军、韩娜、王丽艳编写;项目六、八、九由陈方昕编写;

项目七、十三由吴道君编写;项目十二由严梅编写;项目十五由符志强、曾昊和广州

为学教育科技有限公司黄勇工程师编写。本书的主审工作由汤庸、周雅兰完成。

本书作为普通高等教育“十三五”规划教材,不仅适合作为高等院校、各类职业

技术院校和各种Java技术培训班的教材,也适合没有任何编程经验的初学者使用。

致谢

在本书顺利出版之际,感谢我教过的所有学生,教他们学习Java的经历对于本

书内容的遴选和组织有很大帮助,感谢广东科贸职业学院信息工程系的孙继红、张

雷、王磊、曾海峰老师提出的建议和给予的协助。另外,还要感谢广州光大教育软件

科技有限公司的谭福民Java工程师,他对本书的编写提了许多宝贵的意见。此外,

本书还参考了许多作者的书籍和资料,在此一并表示深深的谢意。

意见反馈

尽管我们做了很大努力,但很难避免教材会有一些疏漏,欢迎各界专家和读者朋

友提出宝贵意见,我们将不胜感激。在阅读本书过程中,如发现任何问题或有不认同

之处,欢迎与我们联系,联系邮箱:Lfbird2000@126.com。

编者

2019年10月

目录

目录

项目一Java概述及开发环境搭建11.程序的结构设计31

2.顺序结构32

任务一认识Java13.选择结构32

必备知识14.循环结构37

1.Java的发展历史15.循环跳转语句43

2.Java语言的特点2思考练习48

3.Java程序的运行机制上机实训(二)50

和Java虚拟机3

项目三数组与方法52

任务二Java开发环境搭建4

必备知识4任务一数组的定义及使用52

1.Java平台简介4必备知识52

.的安装与配置

2JDK51.一维数组的声明及使用52

任务三编写并运行第一个2.二维数组的定义及使用55

Java程序73.字符数组56

必备知识74.字符串57

1.什么是Java源程序7任务二方法的定义及使用63

2.Java中类的定义格式7必备知识63

3.如何编译和运行一个Java程序81.方法的定义63

任务四Java与其他语言的比较132.方法的调用63

必备知识133.参数传递65

1.Java与C#比较13任务三数组的引用传递70

2.Java与PHP比较13必备知识70

思考练习131.数组参数70

上机实训(一)142.示例——一维数组求最大值70

3.示例——二维数组作形参71

项目二Java语言编程基础15

思考练习73

任务一数据类型与常量、变量15上机实训(三)75

必备知识15

项目四Teacher类与对象的创建

1.认识标识符15

2.认识关键字16与使用77

3.认识数据类型16

任务一Teacher类的创建77

4.认识常量16

5.认识变量18必备知识77

.面向对象与面向过程的区别

任务二运算符、表达式与语句23177

2.类与对象的关系78

必备知识23

3.类的定义格式78

.运算符

1234.成员变量和局部变量的区别78

2.运算符的优先级27

任务二调用构造方法创建

3.表达式28

4.语句28Teacher类对象80

任务三程序控制结构31必备知识80

必备知识311.对象的创建格式80

I

Java程序设计教程

2.构造方法81任务二接口与接口的实现120

3.对象的使用81必备知识120

4.对象的引用传递811.什么是接口120

任务三使用setter()和getter()2.接口如何定义120

方法访问被封装属性853.接口怎样继承121

必备知识854.接口怎样实现121

1.封装的概念85任务三包与访问权限124

2.封装的目的85必备知识124

3.setter()和getter()方法851.什么是包124

4.访问控制权限852.如何定义包124

思考练习

893.怎样设定权限124

上机实训(四)93

思考练习127

项目五类的继承与多态94上机实训(六)130

任务一类的继承94项目七异常捕获131

必备知识94任务一除法计算工具

1.继承的概念94

———异常捕获及处理132

2.继承的作用95

必备知识133

3.继承的实现95

1.异常的概念133

任务二进一步学习继承101

2.异常处理的语法格式134

必备知识101

1.子类实例化过程101任务二进制转换工具

———

2.使用setter和getter方法异常抛出137

访问父类的私有属性101必备知识137

任务三类的多态1041.什么叫抛出异常137

必备知识1042.抛出异常的语法格式137

1.多态的概念104任务三进制转换工具

2.多态的作用104———声明异常139

3.多态的实现104必备知识139

任务四进一步学习多态1071.什么叫声明异常139

必备知识1072.声明异常的语法格式139

1.Java多态存在的三个任务四圆的计算工具

必要条件109

———自定义异常141

2.对象多态的两种类型109

必备知识141

3.对象转型格式109

1.自定义异常141

思考练习112

2.如何自定义异常141

上机实训(五)114

思考练习143

116

项目六抽象类、接口和包上机实训(七)144

任务一抽象类和抽象方法116

项目八Java中I/O的应用146

必备知识117

1.什么是抽象方法117任务一标准输入/输出146

2.抽象方法的声明117必备知识146

3.什么是抽象类1171.什么是输入/输出146

4.抽象类的定义格式1172.System类对I/O的支持147

II

目录

任务二File类149任务二用Runnable接口

必备知识149实现多线程179

1.流的分类149必备知识179

2.File类1491.利用接口Runnable来实现

任务三I/O流的分类152多线程179

必备知识1522.线程的几个重要方法180

1.字符流152任务三线程的同步与死锁182

2.字节流153必备知识182

3.节点流和过滤流1541.多线程资源共享安全问题182

任务四常用I/O流的应用1542.线程的同步操作183

必备知识154思考练习187

1.Java.io包中的常用的类154上机实训(十)188

2.FileReader类155

项目十一Java网络编程190

3.FileWriter类155

思考练习158任务一网络编程

上机实训(八)159InetAddress类的应用190

项目九图形用户界面编程160必备知识190

1.计算机网络的几个术语190

任务一框架的设计1602.网络编程概述191

必备知识1603.网络通信方式191

1.什么是图形界面程序设计1604.包191

2.GUI使用的组件161任务二TCP网络编程193

3.容器类、组件类与辅助类161必备知识193

4.框架JFrame1621.TCP网络编程193

任务二按钮和文本区的2.TCP客户端编程步骤193

3.TCP服务器端编程步骤193

设计布局164

任务三网络编程

必备知识164UDP197

1.文本框164必备知识197

2.几种常见的布局管理器1651.UDP网络编程197

2.UDP客户端编程步骤198

3.GridLayout布局165

3.UDP服务器端编程步骤199

任务三事件响应及界面

任务四多线程与网络编程的

程序设计168

综合应用202

必备知识168

202

1.什么是事件响应168必备知识

1.客户端和服务器端程序

2.如何定义事件响应168

功能划分202

思考练习174

2.多线程与网络编程的应用202

上机实训(九)175

思考练习208

项目十多线程176上机实训(十一)209

任务一用Thread类实现多线程176项目十二用Java集合来实现学生

必备知识176信息的管理211

1.多线程的概念176

2.线程的生命周期177任务一集合类的选择211

3.实现多线程的两种方法177必备知识211

4.继承Thread类来实现多线程1781.Java集合概述211

III

Java程序设计教程

2.集合与数组的区别2122.PreparedStatement对象的

3.Java集合体系结构212常用方法261

任务二采用List派生集合管理思考练习263

有序数据214上机实训(十三)263

必备知识214

项目十四API帮助文档的使用265

1.List接口简介214

2.List接口重要API214任务一格式化日期SimpleDate

3.常用派生类215Format类的使用265

任务三采用派生集合管理

Set必备知识265

无序数据218

1.JavaAPI中有哪些包265

必备知识2182.API的结构及使用266

1.Set接口简介218任务二网络编程类ServerSocket

2.Set接口重要API219

和Socket的使用269

3.常用派生类HashSet类219

任务四采用Map派生集合管理必备知识269

1.ServerSocket类的使用269

映射关系的数据222

2.Socket类的使用270

222

必备知识3.输入/输出流的使用270

1.Map接口简介222

任务三数据库编程类的使用272

2.Map接口重要API223

必备知识273

3.常用派生类HashMap223

1.Java.sql包中的主要接口273

思考练习227

2.两种常用的数据库访问技术273

上机实训(十二)

2283.数据库相关类的使用273

项目十三使用JDBC实现超市小结277

进销存管理231

项目十五MyEclipse调试入门278

任务一JDBC编程环境的搭建231

任务一调试阶乘程序代码278

必备知识231

1.JDBC简介231必备知识278

2.JDBC驱动程序2321.断点的概念278

2.断点的分类279

3.DriverManager类

和Connection类232任务二求水仙花数问题285

4.常用的数据库介绍232必备知识285

5.常用的SQL语句举例2341.水仙花数的定义285

任务二采用Statement完成2.求水仙花数的算法285

数据库的增删改查240任务三分解质因数问题289

必备知识240必备知识289

1.Statement类2401.分解质因数289

2.ResultSet结果集2412.分解质因数的算法289

3.JDBC编程一般步骤242小结292

任务三采用PreparedStatement

附录思考练习参考答案293

完成数据库的增删改查261

必备知识261参考文献300

1.PreparedStatement简介261

IV

项目一Java概述及开发环境搭建

项目一

Java概述及开发环境搭建

相关词汇

1.DK(Javadevelopmentkit):Java开发工具

2.JVM(Javavirtualmachine):Java虚拟机

3.sourcecode:源代码4.compile:编译

5.run:运行6.bytecode:字节码文件

7.workspace:工作空间8.project:项目

9.OO(procedure-oriented):面向对象

10.OOP(object-orientedprogramming):面向对象编程

项目描述

下载并配置JDK开发工具,利用记事本编写第一个Java程序,程序运行输出

“Hello,Java!”。

项目分解

本项目可分解为以下几个任务:

认识Java;

Java开发环境搭建;

编写并运行第一个Java程序;

Java与其他语言的比较。

任务一认识Java

了解Java的发展历史;理解Java语言的特点以及Java程序的运行机制和Java虚

拟机。

1.Java的发展历史

Java是SUN公司开发出来的一套编程语言,主设计者是JamesGosling。它最早

1

Java程序设计教程

来源于一个叫Green的项目,起初打算采用C++进行开发,可是发现C++不能胜任此

项工作。由于C++的内存管理是可直接访问地址的,会使系统出现一些问题,所以SUN

公司的工程师在C++的基础之上开发了一个新的平台,称为Oak(Java的前身)。然

后,他们又对Oak进行了小规模的改造,就这样,Java在1995年诞生了。

Java的发展历程如下:

1996年1月,第一个JDK——JDK1.0诞生。

1999年6月,SUN公司发布Java的三个版本:标准版(J2SE)、企业版(J2EE)

和微型版(J2ME)。

●J2SE:整个Java技术的核心和基础,它是J2ME和J2EE编程的基础,也是

这本书主要介绍的内容。

●J2EE:Java技术中应用最广泛的部分,提供了企业应用开发的完整解决方案。

●J2ME:主要用于控制移动设备和信息家电等邮箱存储的设备。

2002年2月,SUN公司发布了JDK历史上较为成熟的版本——JDK1.4,由于

Compaq、Fujitsu、SAS、Symbian、IBM等公司的参与,使JDK1.4成为当时发展最快

的一个JDK版本。到JDK1.4为止,用户已经可以使用Java实现大多数的应用。

2004年10月,SUN公司发布了万众期待的JDK1.5,同时SUN将JDK1.5改名

为JavaSE5.0。JDK1.5增加了诸如泛型、增强的for语句、可变形参、注释、自动拆

箱和装箱等功能。同时,推出了EJB3.0规范和MVC框架规范。

2005年6月,JavaOne大会召开,SUN公司公开JavaSE6。此时,Java的各种版

本已经更名,取消其中的数字“2”:J2EE更名为JavaEE,J2SE更名为JavaSE,J2ME

更名为JavaME。

2006年12月,SUN公司发布JRE6.0。

2009年4月20日,甲骨文74亿美元收购SUN,取得Java的版权。

2011年7月,甲骨文公司发布Java7的正式版。

2014年3月,甲骨文公司发布JavaSE8。

2017年9月,甲骨文公司发布JavaSE9。

2.Java语言的特点

Java语言的流行在于Java语言本身的面向对象、简单、可移植性、安全性、多

线程等特点。Java语言的结构和编写方式与C++语言很类似,因此学习Java语言,不

仅要了解Java语言独有的编程特点,同时还要有程序设计基础和面向对象的概念。

(1)简单性。Java语言与C++类似,如果用户了解C++和面向对象的概念,就可

以很快编写出Java程序;此外,Java摒弃了C++中如头文件、指针变量、结构、运算

符重载、多重继承等复杂特性,它只提供了基本的方法,减少了编程的复杂性。

(2)面向对象。所谓面向对象是指现实世界中任何实体都可以看作是对象,对象

之间通过消息相互作用。传统的过程式编程语言是以过程为中心、以算法为驱动,而

面向对象编程语言则是以对象为中心、以消息为驱动。过程式编程语言用公式表示为:

程序=算法+数据;面向对象编程语言用公式表示为:程序=对象+消息。

2

项目一Java概述及开发环境搭建

面向对象的三个特征:封装、多态性和继承。现实世界中的对象均有属性和行为,

属性表示对象的数据,行为表示对象的方法。

(3)可移植性。Java严格规定了各种基本数据类型的长度。Java语言经编译后生

成与计算机硬件结构无关的字节代码,这些字节代码被定义为不依赖任何硬件平台和

操作系统。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java

的运行环境是用ANSIC实现的。Java程序经过一次编译后可移植到别的系统上解释

执行,如可在MS-DOS、Windows、UNIX等任何平台上运行,具有很强的可移植性。

(4)Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式,

然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器

对这些字节码进行解释执行,执行过程中需要的类在连接阶段被载入运行环境中。

(5)交互式特性。Java是面向对象的网络编程语言,由于它支持TCP/IP协议,

使得用户可以通过浏览器访问Internet上的各种动态对象。Java提供了一整套网络类

库,开发人员可以利用类库进行网络程序设计,方便实现Java的分布式特性。

(6)多线程机制。Java语言支持多线程机制,多线程机制使得Java程序能够并行

处理多项任务。多线程机制可以很容易地实现网络上的交互式操作。C和C++采用单线

程体系结构,而Java支持多个线程的同时执行,并提供多线程之间的同步机制。

(7)动态的内存管理机制。Java语言采用了自动垃圾回收机制进行内存的管理。在

C++语言中,程序员在编写程序时要及时释放不用的内存单元,一旦内存管理不当,就

可能会造成内存泄露、程序运行故障问题。在Java系统中包括了一个自动垃圾回收程序,

它可以自动、安全地回收不再使用的内存块。这样,编程人员就无须担心内存的管理问

题,从而使Java程序的编写变得简单,同时也减少了内存管理方面出错的可能性。

(8)Java是高性能的。与解释型的高级脚本语言相比,Java的确是高性能的。事

实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++。

(9)可靠性和安全性。由于Java主要用于网络应用程序开发,因此对安全性有

较高的要求。Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统

的威胁破坏。Java虽然源于C++,但它消除了许多C++的不可靠因素,可以防止许多

编程错误。首先,Java是强类型的语言,要求用显式的方法声明,这保证了编译器可

以发现方法调用错误,保证程序更加可靠;其次,Java不支持指针,这杜绝了内存的

非法访问;第三,Java的自动单元收集防止了内存丢失等动态内存分配导致的问题;

第四,Java解释器运行时实施检查,可以发现数组和字符串访问的越界;最后,Java

提供了异常处理机制,程序员可以把一组错误代码放在一个地方,这样可以简化错误

处理任务,便于恢复。

上述几种机制结合起来,使得Java成为安全的编程语言。

3.Java程序的运行机制和Java虚拟机

(1)Java程

温馨提示

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

最新文档

评论

0/150

提交评论