本书是清华大学出版社出版的教材《面向对象程序设计——Java编程》(ISBN:978?7?302?59863?3)的配套用书,也可独立作为上机实验用书。本书共13章,基本与主教材中的各个章节一一对应。本书针对Java程序设计的初级及高级操作,精心设计了各章的实验,每章都包含若干上机实验题,每个实验题由实验内容、实验思路、实验代码和运行结果组成。实验内容由浅入深、循序渐进,知识点全面,并有目的地针对学习Java语言过程中遇到的重点和难点进行讲解与指导,强调实用性和易学性,可以帮助读者进一步熟悉和掌握Java语言的语法知识及程序设计方法。每章后面的自测题为学生提供了额外的编程题,以帮助学生更快地提高编程水平。本书是一本教学参考书,希望读者在使用、调试本书中代码的同时,既能加深对Java语言的理解,又能提高程序设计的能力,并在此过程中不断发现问题、思考问题、解决问题,把本书当作掌握知识的工具和桥梁。
前言
Java语言程序设计是计算机程序设计中一门实践性很强的课程,仅通过阅读教科书或听课是不可能完全掌握的,学习程序设计的最重要环节就是实践。对于自学读者来说,更多一重困难,就是在学习和实践过程中缺乏指导。上机实践是程序设计语言教学的一个重要环节,也是学生提高编程能力的重要途径。只有自己动手编写程序并上机调试程序才能将书本知识灵活运用。为了让学生在Java语言程序设计课程的上机实践中更有针对性,笔者编写了这本Java语言程序设计上机指导用书。
本书是与《面向对象程序设计——Java编程》(ISBN: 978?7?302?59863?3)配套的实验教程,目的是为读者的学习提供一些指导,为提高读者的编程能力助一臂之力,使读者在实践的过程中少些曲折和彷徨,多些成功的乐趣。为了使学生在上机实验时目标明确,本书针对课程内容编写相对应的实验。为了方便不同背景和实验学时的学生使用,大部分实验都是独立性的实验,在教学过程中,教师可以根据实际情况进行适当的选择。由于Java语言的知识点众多,因此本书将实验着重放在Java语言的重点和难点上,对学习过程中容易混淆的概念、容易忽视的要点进行详细讲解。力求让每次实验都能有一个明确的目标,从而让学生更好地理解相关知识,并加以灵活运用。
在实践方面,本书注重培养学生的实践能力和创新精神。通过大量的实例和练习题,学生可以巩固所学知识,提高解决实际问题的能力。同时,本书还引入了一些实战项目案例和综合练习题,让学生能够在实践中体验Java编程的乐趣和挑战,为未来的编程学习和职业发展做好充分准备。因此,读者只要按部就班地完成每章的实验内容,就能对相应章节的知识有所巩固,并且在读懂每章给出的知识点和实例的基础上完成一系列项目实践的基本训练,就可以对一些较具规模的Java项目有一定的体验,为开发较大型的Java项目打下基础。
在本书编写过程中,笔者力求做到内容全面、结构清晰、实例丰富,以便读者更好地学习和理解。本书适合各类编程初学者使用,无论是计算机专业的学生还是非计算机专业的自学者,都能受益匪浅。
本书由吉林师范大学蒋云峰、吕凯主编。其中第1~8章由蒋云峰编写,第9~13章由吕凯编写。
由于时间仓促、水平有限,不足之处在所难免,恳请读者批评指正。
编者2026年1月
目录
上机实验1Java简介1
1.1JDK开发工具1
实验1?1安装JDK1
实验1?2配置系统环境变量2
1.2Java集成开发环境Eclipse6
实验1?3Eclipse的安装和启动6
实验1?4Eclipse调试工具10
自测题19
上机实验2Java编程基础20
2.1数据的输入和输出20
实验2?1输入输出20
2.2基本数据类型21
实验2?2进制转换21
实验2?3字符与编码22
实验2?4大小写转换23
实验2?5希腊字母表24
2.3Java中的运算符25
实验2?6计算面积和周长25
实验2?7整数各位输出26
实验2?8判断闰年27
2.4选择结构语句28
实验2?9判断素数28
实验2?10x的n次方29
实验2?11判断直角三角形30
实验2?12成绩等级31
实验2?13斐波那契数列32
2.5循环结构语句33
实验2?14最大公约数和最小公倍数33
实验2?15整数各位求和34
实验2?16数的所有因子35
实验2?17完全数36
实验2?18莱布尼茨公式37
实验2?19爱因斯坦阶梯数学题38
自测题39
上机实验3数组40
3.1一维数组40
实验3?1输出大于平均值的数40
实验3?2字母正序输出41
实验3?3模拟双色球生成案例43
实验3?4数组乱序后输出44
实验3?5数组中查找数据45
实验3?6在有序数组中插入数据46
实验3?7选择排序47
实验3?8插入排序49
实验3?9快速排序50
3.2二维数组51
实验3?10杨辉三角形51
实验3?11求矩阵的鞍点53
实验3?12对角线元素之和55
实验3?13二维数组的最值56
自测题57
上机实验4面向对象(一)58
4.1类与对象58
实验4?1设计学生类58
实验4?2设计矩形类60
实验4?3创建学生类对象61
实验4?4创建矩形类对象62
4.2构造方法63
实验4?5学生类构造方法64
实验4?6矩形类构造方法65
4.3this关键字66
实验4?7this的使用67
4.4方法的重载68
实验4?8构造方法和成员方法的重载68
4.5静态成员70
实验4?9图书销量71
实验4?10角度转换72
实验4?11家庭存款73
实验4?12三角形工具类74
4.6成员访问控制75
实验4?13学生类成员访问权限75
自测题78
上机实验5面向对象(二)79
5.1类的继承79
实验5?1教师类79
实验5?2员工类81
5.2方法的重写83
实验5?3等边三角形类83
实验5?4动物类85
5.3抽象类和接口86
实验5?5打印机类86
实验5?6操作系统类88
实验5?7汽车类89
实验5?8报警接口90
实验5?9玩游戏接口91
5.4多态92
实验5?10打印机的参数93
实验5?11银行利率94
实验5?12汽车销售95
自测题97
上机实验6异常98
6.1异常处理98
实验6?1InputMismatchException异常98
实验6?2数组越界异常99
实验6?3多异常处理100
6.2自定义异常101
实验6?4身份证号码长度异常101
实验6?5账户余额不足102
实验6?6电脑异常104
自测题106
上机实验7Java常用系统类107
7.1字符串类107
实验7?1统计不同字符的个数107
实验7?2删除给定字符108
实验7?3判断手机号码的格式109
实验7?4提取大写字母110
实验7?5分解单词111
实验7?6回文字符串112
实验7?7StringBuffer判断回文字符串113
实验7?8金额三位分法114
7.2日期和时间类115
实验7?9计算年龄115
实验7?10生成日历116
7.3Math类和Random类118
实验7?11答题游戏118
实验7?12随机生成验证码119
实验7?13计算执行时间120
实验7?14计算点距121
7.4System类和Runtime类123
实验7?15系统的全部属性123
实验7?16虚拟机信息124
自测题125
上机实验8集合126
8.1List接口126
实验8?1水果名称存储126
实验8?2约瑟夫环游戏127
8.2Set接口129
实验8?3水果价格存储129
实验8?4水果销量排名132
实验8?5模拟用户注册134
实验8?6用户姓名排序136
8.3Map接口138
实验8?7单词数量统计138
实验8?8倒序显示单词出现的次数139
实验8?9求众数141
8.4泛型142
实验8?10HashSet集合指定泛型类型142
实验8?11HashMap集合指定泛型类型143
8.5常用工具类145
实验8?12斗地主发牌145
实验8?13十进制数转换成二进制数146
实验8?14二叉树的遍历147
实验8?15数组与集合的相互转换150
自测题151
上机实验9I/O流152
9.1File类152
实验9?1目录和文件的创建152
实验9?2文件属性154
实验9?3遍历指定扩展名的文件155
实验9?4创建日记文件156
实验9?5计算所有文件大小之和158
9.2字节流159
实验9?6读取日记1160
实验9?7写日记1161
实验9?8日记复制1162
9.3字符流163
实验9?9读取日记2164
实验9?10写日记2164
实验9?11日记复制2166
实验9?12指定编码读写字符167
实验9?13统计字符的数量168
实验9?14读写对象数据170
自测题171
上机实验10GUI(图形用户界面)172
10.1Swing常用组件及布局管理器172
实验10?1简易计算器界面172
实验10?2简易记事本界面174
实验10?3QQ登录界面175
10.2事件处理机制180
实验10?4计算单击按钮数180
实验10?5简易计算器181
实验10?6改变界面颜色184
实验10?7QQ登录186
自测题188
上机实验11线程190
11.1线程机制190
实验11?1龟兔赛跑190
11.2多线程同步193
实验11?2SVIP优先办理业务194
实验11?3双线程猜数字196
自测题199
上机实验12网络编程基础200
12.1UDP通信200
实验12?1模拟用户聊天200
12.2TCP通信203
实验12?2与服务器通信203
自测题205
上机实验13基于Java Swing的学生宿舍管理系统206
13.1项目概述206
13.1.1功能结构图206
13.1.2项目预览图207
13.2数据库设计208
13.2.1E?R图209
13.2.2数据表209
13.3功能模块设计211
13.3.1实体类211
13.3.2公共类——连接数据库214
13.3.3注册界面215
13.3.4登录界面221
13.3.5管理员界面223
13.3.6学生数据面板225
13.3.7寝室数据面板233
13.3.8分配寝室面板237
13.3.9学生个人界面240
13.3.10个人信息界面241
13.3.11我的寝室界面241