目录CONTENTS**篇基础篇
第1章Java概述3
本章学习目标3
1.1认识Java语言3
1.1.1Java语言的特点4
1.1.2Java平台的体系结构4
1.2Java运行环境与开发环境5
1.2.1Java运行环境6
1.2.2安装6
1.2.3安装Eclipse开发工具6
1.3Java程序举例8
1.3.1用Eclipse编写**个JavaApplication8
1.3.2用Eclipse编写带命令行参数的应用程序13<p> </p> <p>目录CONTENTS**篇基础篇</p> <p>第1章Java概述3</p> <p>本章学习目标3</p> <p>1.1认识Java语言3</p> <p>1.1.1Java语言的特点4</p> <p>1.1.2Java平台的体系结构4</p> <p>1.2Java运行环境与开发环境5</p> <p>1.2.1Java运行环境6</p> <p>1.2.2安装6</p> <p>1.2.3安装Eclipse开发工具6</p> <p>1.3Java程序举例8</p> <p>1.3.1用Eclipse编写**个Java Application8</p> <p>1.3.2用Eclipse编写带命令行参数的应用程序13</p> <p>习题与思考15</p> <p>第2章Java程序设计基础16</p> <p>本章学习目标16</p> <p>2.1标识符和关键字16</p> <p>2.1.1如何定义标识符16</p> <p>2.1.2关键字17</p> <p>2.1.3注释17</p> <p>2.2常量和变量18</p> <p>2.2.1常量18</p> <p>2.2.2变量18</p> <p>2.3基本数据类型19</p> <p>2.3.1布尔类型19</p> <p>2.3.2字符类型20Java程序设计(第2版)目录2.3.3整数类型21</p> <p>2.3.4浮点类型21</p> <p>2.3.5各类型数据间的相互转换22</p> <p>2.4运算符23</p> <p>2.4.1算术运算符23</p> <p>2.4.2赋值运算符25</p> <p>2.4.3条件运算符26</p> <p>2.4.4位运算符26</p> <p>2.4.5关系运算符28</p> <p>2.4.6逻辑运算符28</p> <p>2.5表达式29</p> <p>2.6程序控制语句30</p> <p>2.6.1if语句30</p> <p>2.6.2switch语句31</p> <p>2.6.3while与dowhile语句33</p> <p>2.6.4for语句34</p> <p>2.6.5break语句36</p> <p>2.6.6continue语句38</p> <p>2.6.7return语句39</p> <p>2.6.8实用案例40</p> <p>2.7实训任务41</p> <p>习题与思考42</p> <p>第3章数组44</p> <p>本章学习目标44</p> <p>3.1数组使用初探44</p> <p>3.2一维数组45</p> <p>3.2.1定义数组45</p> <p>3.2.2生成数组45</p> <p>3.2.3初始化数组46</p> <p>3.2.4访问数组46</p> <p>3.2.5实用案例47</p> <p>3.3二维数组47</p> <p>3.3.1定义二维数组48</p> <p>3.3.2二维数组元素的引用48</p> <p>3.3.3实用案例49</p> <p>3.4Arrays类50</p> <p>3.4.1Arrays类及基本使用50</p> <p>3.4.2实用案例52</p> <p>3.5数组实训任务53</p> <p>习题与思考54</p> <p>第4章类和对象设计56</p> <p>本章学习目标56</p> <p>4.1面向对象基础56</p> <p>4.2类和对象初探58</p> <p>4.3定义类59</p> <p>4.3.1定义成员变量59</p> <p>4.3.2定义成员方法60</p> <p>4.3.3方法重载61</p> <p>4.4对象62</p> <p>4.4.1实例化对象62</p> <p>4.4.2初始化对象62</p> <p>4.4.3使用对象64</p> <p>4.4.4使用静态变量和方法66</p> <p>4.4.5清除对象68</p> <p>4.4.6应用程序与命令行参数68</p> <p>4.4.7实用案例70</p> <p>4.5包71</p> <p>4.5.1包的定义71</p> <p>4.5.2包的引入72</p> <p>4.6类及成员修饰符73</p> <p>4.6.1public73</p> <p>4.6.2protected74</p> <p>4.6.3private75</p> <p>4.6.4final76</p> <p>4.6.5实用案例77</p> <p>4.7类和对象实训任务78</p> <p>习题与思考83</p> <p>第5章继承与多态84</p> <p>本章学习目标84</p> <p>5.1继承使用初探84</p> <p>5.2类的继承85</p> <p>5.2.1继承的实现85</p> <p>5.2.2继承与重写87</p> <p>5.2.3继承与类型转换90</p> <p>5.2.4实用案例91</p> <p>5.3多态性92</p> <p>5.3.1多态性的概念92</p> <p>5.3.2实用案例94</p> <p>5.4抽象类与抽象方法95</p> <p>5.4.1定义抽象类及实现抽象方法95</p> <p>5.4.2实用案例95</p> <p>5.5接口97</p> <p>5.5.1接口定义97</p> <p>5.5.2接口实现97</p> <p>5.5.3实用案例99</p> <p>5.6内部类100</p> <p>5.6.1成员内部类101</p> <p>5.6.2局部内部类101</p> <p>5.6.3静态内部类(嵌套类)101</p> <p>5.6.4匿名内部类102</p> <p>5.6.5实用案例102</p> <p>5.7Java类的**特性104</p> <p>5.7.1泛型104</p> <p>5.7.2Java类加载机制107</p> <p>5.7.3Java反射机制108</p> <p>5.7.4实用案例114</p> <p>5.7.5Java注解120</p> <p>5.8继承与多态实训任务123</p> <p>习题与思考125</p> <p>第6章Java标准类库128</p> <p>本章学习目标128</p> <p>6.1Java标准类库简介128</p> <p>6.2字符串String类和StringBuffer类129</p> <p>6.2.1String类129</p> <p>6.2.2StringBuffer类134</p> <p>6.2.3正则表达式136</p> <p>6.2.4实用案例139</p> <p>6.3数据类型包装器类139</p> <p>6.3.1整型包装器类140</p> <p>6.3.2实用案例141</p> <p>6.4System类和Runtime类142</p> <p>6.4.1记录程序执行的时间142</p> <p>6.4.2复制数组143</p> <p>6.4.3内存管理143</p> <p>6.4.4实用案例144</p> <p>6.5Math类和Random类145</p> <p>6.5.1Math类145</p> <p>6.5.2Random类146</p> <p>6.5.3实用案例147</p> <p>6.6日期时间实用工具类148</p> <p>6.6.1Date(日期)148</p> <p>6.6.2Calendar(日历)149</p> <p>6.6.3实用案例151</p> <p>6.7Java集合类152</p> <p>6.7.1集合接口152</p> <p>6.7.2实现List接口的类154</p> <p>6.7.3实现Set接口的类156</p> <p>6.7.4通过迭代接口访问集合类158</p> <p>6.7.5映射接口160</p> <p>6.7.6实现Map接口的类162</p> <p>6.8标准类实训任务165</p> <p>习题与思考167</p> <p>第二篇提高篇</p> <p>第7章异常处理171</p> <p>本章学习目标171</p> <p>7.1为什么需要异常处理171</p> <p>7.2异常概述174</p> <p>7.2.1什么是异常174</p> <p>7.2.2异常处理带来的好处175</p> <p>7.3异常处理机制177</p> <p>7.3.1Java的异常处理机制177</p> <p>7.3.2异常类的类层次178</p> <p>7.3.3异常的处理179</p> <p>7.3.4实用案例182</p> <p>7.4自定义异常类184</p> <p>7.5异常处理实训任务186</p> <p>习题与思考187</p> <p>第8章输入输出处理188</p> <p>本章学习目标188</p> <p>8.1流的作用188</p> <p>8.2流的划分189</p> <p>8.3标准输入输出流191</p> <p>8.3.1标准输入191</p> <p>8.3.2Scanner类封装标准输入流192</p> <p>8.3.3标准输出193</p> <p>8.3.4实用案例193</p> <p>8.4字节流使用194</p> <p>8.4.1File类194</p> <p>8.4.2文件字节流199</p> <p>8.4.3字节过滤流201</p> <p>8.4.4实用案例203</p> <p>8.5字符流使用205</p> <p>8.5.1文件字符流205</p> <p>8.5.2字节流向字符流的转化206</p> <p>8.5.3Scanner封装字符流208</p> <p>8.5.4实用案例210</p> <p>8.6串行化211</p> <p>8.6.1串行化的概念211</p> <p>8.6.2实用案例212</p> <p>8.7输入输出处理实训任务213</p> <p>习题与思考217</p> <p>第9章Java多线程218</p> <p>本章学习目标218</p> <p>9.1为什么使用多线程218</p> <p>9.2线程的概念219</p> <p>9.3线程的创建220</p> <p>9.3.1采用继承创建线程220</p> <p>9.3.2通过实现接口创建线程222</p> <p>9.3.3实用案例223</p> <p>9.4线程的生命周期及调度224</p> <p>9.4.1线程生命周期224</p> <p>9.4.2线程调度和优先级226</p> <p>9.4.3线程的终止227</p> <p>9.4.4实用案例229</p> <p>9.5多线程互斥与同步230</p> <p>9.5.1线程的互斥230</p> <p>9.5.2线程的同步234</p> <p>9.5.3实用案例236</p> <p>9.6多线程实训任务238</p> <p>习题与思考242</p> <p>第10章GUI程序设计244</p> <p>本章学习目标244</p> <p>10.1为什么学习GUI程序设计244</p> <p>10.2基于Swing的简单界面设计245</p> <p>10.2.1Swing简介245</p> <p>10.2.2Swing的类层次结构246</p> <p>10.2.3常见GUI组件247</p> <p>10.2.4基于AWT的GUI程序249</p> <p>10.3界面布局251</p> <p>10.3.1无布局管理器布局251</p> <p>10.3.2FlowLayout253</p> <p>10.3.3BorderLayout254</p> <p>10.3.4GridLayout255</p> <p>10.3.5利用可视化工具进行布局256</p> <p>10.3.6实用案例259</p> <p>10.4响应用户事件261</p> <p>10.4.1事件处理的基本过程261</p> <p>10.4.2常用事件与事件监听器类263</p> <p>10.4.3键盘与鼠标事件265</p> <p>10.4.4实用案例268</p> <p>10.5**组件JTree和JTable270</p> <p>10.5.1JTree组件270</p> <p>10.5.2JTable组件274</p> <p>10.5.3实用案例277</p> <p>10.6GUI程序设计实训任务279</p> <p>习题与思考285</p> <p>第三篇网络篇</p> <p>第11章网络通信289</p> <p>本章学习目标289</p> <p>11.1类URL与URLConnection289</p> <p>11.2类InetAddress294</p> <p>11.3Socket通信296</p> <p>11.3.1基于TCP协议的Socket通信296</p> <p>11.3.2实用案例298</p> <p>11.3.3基于UDP的网络通信302</p> <p>11.3.4实用案例303</p> <p>11.3.5基于MulticastSocket实现多点广播306</p> <p>11.4网络通信实训任务308</p> <p>习题与思考309</p> <p>第12章JSP与Servlet技术310</p> <p>本章学习目标310</p> <p>12.1为什么使用JSP310</p> <p>12.2JSP技术312</p> <p>12.2.1JSP工作原理312</p> <p>12.2.2JSP的构成314</p> <p>12.2.3JSP内建对象317</p> <p>12.2.4实用案例322</p> <p>12.3Servlet技术324</p> <p>12.3.1Servlet介绍324</p> <p>12.3.2Servlet常用接口的使用325</p> <p>12.3.3使用HttpServlet处理客户端请求329</p> <p>12.3.4获得Servlet初始化参数332</p> <p>12.3.5实用案例334</p> <p>12.4JSP和Servlet结合的方法336</p> <p>12.4.1模式一: JSP JavaBean336</p> <p>12.4.2模式二: JSP Servlet JavaBean336</p> <p>12.4.3JSP和Servlet的选择337</p> <p>12.4.4实用案例337</p> <p>12.5JSP与Servlet开发实训任务339</p> <p>习题与思考342</p> <p>第13章用Tomcat构建Web站点343</p> <p>本章学习目标343</p> <p>13.1Tomcat简介343</p> <p>13.2安装配置Tomcat344</p> <p>13.3编写简单的Web站点345</p> <p>13.3.1配置服务器运行环境345</p> <p>13.3.2新建动态Web工程346</p> <p>13.3.3Web工程的结构347</p> <p>13.3.4新建Servlet和JSP程序347</p> <p>13.4运行Web站点351</p> <p>13.5发布Web站点352</p> <p>习题与思考353</p> <p>第14章JDBC技术354</p> <p>本章学习目标354</p> <p>14.1为什么需要JDBC354</p> <p>14.2数据库和常用的SQL语句356</p> <p>14.3JDBC的结构358</p> <p>14.4通过JDBC访问数据库359</p> <p>14.4.1加载JDBC驱动程序359</p> <p>14.4.2建立连接359</p> <p>14.4.3执行SQL语句360</p> <p>14.4.4检索结果360</p> <p>14.4.5关闭连接361</p> <p>14.4.6实用案例361</p> <p>14.4.7事务处理365</p> <p>14.4.8实用案例366</p> <p>14.5JDBC实训任务370</p> <p>习题与思考376</p> <p>第四篇实例篇</p> <p>第15章Java应用开发案例379</p> <p>本章学习目标379</p> <p>15.1基于Web的简单学生信息管理系统379</p> <p>15.1.1程序的基本结构379</p> <p>15.1.2数据库操作的实现381</p> <p>15.1.3处理Web请求386</p> <p>15.1.4Web页面388</p> <p>15.2推箱子游戏398</p> <p>15.2.1程序的基本结构398</p> <p>15.2.2游戏地图设计398</p> <p>15.2.3程序逻辑399</p> <p>15.2.4绘制游戏界面404</p> <p>15.2.5游戏窗体406</p> <p>参考文献409</p>显示全部信息前 言主任: 李晓明副主任: 蒋宗礼卢先和委员: (按姓氏笔画为序)马华东马殿富王志英王晓东宁洪刘辰孙茂松李仁发李文新杨波吴朝晖何炎祥宋方敏张莉金海周兴社孟祥旭袁晓洁钱乐秋黄国兴曾明廖明宏秘书: 张瑞庆
本书主审: 李晓明主任: 李晓明副主任: 蒋宗礼卢先和委员: (按姓氏笔画为序)马华东马殿富王志英王晓东宁洪刘辰孙茂松李仁发李文新杨波吴朝晖何炎祥宋方敏张莉金海周兴社孟祥旭袁晓洁钱乐秋黄国兴曾明廖明宏秘书: 张瑞庆<br /><br /><br /><br />本书主审: 李晓明<br />第2版前言FOREWORDJava语言是由Sun公司推出的面向对象程序设计语言,它的平台无关性特点非常适于网络应用,因而备受青睐。由于Java的体系和内容非常庞大,如何帮助初学者建立一个完整的知识体系,如何引导读者将Java的理论、实践和编程技能融为一体,是本书**考虑的问题。本书是网络教育**精品课程和**精品资源共享课程“Java程序设计”的配套教程,适合作为高等学校或网络教育Java课程的教材。本书第1版出版5年多来,受到全国广大师生的好评,已7次印刷发行。教材第2版根据教育部高等学校计算机类专业教学指导委员会关于提**生编程实践能力的精神,在总结课程教学改革经验基础上并结合对第1版教材的反馈意见修订而成。全书组织架构与第1版保持不变,内容由浅入深地分为4篇: “基础篇”(第1~6章)介绍面向对象程序设计的基本思想和Java核心语法;“提高篇”(第7~10章)讲述如何利用Java编程接口提升程序的实用性、可靠性和界面友好性;“网络篇”(第11~14章)在介绍网络通信知识基础上,讲述如何应用Java语言实现桌面应用和Web应用;“实例篇”(第15章)通过具体案例展示Java应用程序的设计过程、编程思路和技术,为项目实战积累编程经验。第2版主要修改包括:(1) 根据JDK 8版的新特性进行了版本更新,并增加了若干相关知识点,具体内容有: 第1章增加了Eclipse安装使用,同时删除原附录A;第3章增加了数组类Arrays;第5章增加了内部类、泛型、闭包、反射机制和注解技术等;第6章增加了正则表达式、Runtime类、自动装箱和拆箱技术等;第9章增加了线程池、多线程互斥与同步等;第10章弱化Applet,同时增强了Swing中的**组件;第11章增加了多播通信技术;第14章增加了数据库事务管理等内容。(2) 进一步丰富了导入案例、知识点案例和各章的综合案例,增加了一系列面向小节知识的实用小案例,力图通过解决模拟问题,培养学生思维能力,激发学生编程兴趣。(3) 提供了与本书配套的、完整的案例源码,便于学生课后自我练习。全书由朱庆生、古平、刘骥、葛亮、杨瑞龙编写。其中,朱庆生教授负责全书体系构思、编写框架、内容选择和编写指导等,并对全书进行审定和修改。第3、4、5、11章由古平副教授编写,第1、7、12、14章由葛亮副教授编写,第10、13、15章由刘骥老师编写,第2、6、8、9章由杨瑞龙老师编写。本次修订,错误或遗漏之处在所难免,恳请批评指正。<br />作者2016年9月第1版前言FOREWORDJava语言是由Sun公司推出的面向对象程序设计语言,它的平台无关性特点非常适于网络应用,因而备受青睐。Java语言正逐步成为全世界程序员使用*多的编程语言,并在桌面应用、Web应用、分布式应用、嵌入式应用系统中发挥着重要作用。对于初学Java程序设计语言的人来说,Java的体系和内容显得非常复��。如何帮助他们建立一个完整的知识体系,以及如何引导他们将Java的理论、实践和技能融为一体,是本书**考虑的问题。本书是在**精品课程“Java程序设计”(网络)和教育部IBM精品课程“Java并发编程实践”的建设和实践教学中总结出来的实用教材,面向全国高校计算机及其相关专业本科生,也可供Java自学人员、软件开发人员参考使用。全书内容由浅入深分为4篇。**篇为基础篇(第1~6章),侧重介绍面向对象程序设计的基本思想和Java核心语法,包括Java运行环境、程序设计基础、数组、类和对象、继承与多态、Java标准类库等。通过这一部分的学习,读者能够掌握Java程序设计的基本方法,并能设计简单的Java程序。第二篇为提高篇(第7~10章),讲述如何利用Java开放的编程接口提升程序的实用性、可靠性和界面友好性,包括Java的异常处理机制、输入输出处理、多线程、图形界面设计、Applet等。通过这一部分的学习,读者可以开发功能更复杂、界面更友好的实用Java应用系统。第三篇为网络篇(第11~14章),介绍网络通信的基础知识,以及Java对桌面网络应用和Web应用的支持与实现,内容包括URL与Socket通信技术、Web编程技术、JDBC技术,以及上述技术在Tomcat与Eclipse开发平台中的具体实现。这是Java在网络通信、Web服务中应用的关键技术。第四篇为实例篇(第15章),通过两个实用案例,分别展示Java桌面应用和Web应用程序的设计过程、思路和关键技术,是前3篇知识的综合应用,也为项目实战积累开发经验。本书在编写上具有以下特点:(1) 注重知识点之间的相互衔接。本书在章节安排上考虑了知识点之间的依赖关系,分析时层层推进,注重知识点之间的环环相扣。(2) 采用Why—What—How的编写模式。本书采用“为什么学→学什么→如何学”的教学思路进行内容组织,每章首先通过“本章学习目标”让读者明确为什么学,其次通过具体案例引出需要学什么,然后从问题求解过程中逐步引出关键知识点,使读者知道该如何学,能够轻松、快速掌握Java语言的基本知识体系和编程技巧。(3) 案例层次化。在章节进入时有导入案例,主要知识点有印证案例,模拟练习时有实训案例,所有案例均配有详细的代码解释和分析。导入案例→印证案例→实训案例,实践→理论→再实践,理论知识与实际应用紧密结合。本书由朱庆生、古平、刘骥、葛亮、杨瑞龙编写。其中,朱庆生教授负责全书体系构思、框架制定、内容选择、编写指导等,并对全书各章进行了审查和修改;第3、4、5、10(部分)、11章由古平编写;第1、7、12、14章由葛亮编写;第10(部分)、13、15章和附录由刘骥编写;第2、6、8、9章由杨瑞龙编写。书中难免有遗漏和不足之处,恳请业界同仁及读者朋友提出宝贵意见,以便在修订时进一步完善。<br /><br />Java程序设计(第2版)编者2011年1月<br />显示全部信息媒体评论评论免费在线读第5章继承与多态本章学习目标继承是一种基于已有类创建新类的机制,利用继承可以先创建一个具有广泛意义的类,然后通过派生创建新类,并添加一些特殊的属性和行为。被继承的类称为父类,其派生得到的类称为子类。类的继承是实现代码复用*有效的方法,本章将主要讲述类继承过程中的几个关键问题:(1) 继承的实现。(2) 方法的重写。(3) 多态的表现。(4) 抽象类与抽象方法。(5) 接口。(6) 泛型。(7) 内部类。(8) Java反射机制。5.1继承使用初探当新建一个类时,也许会发现该类与之前的某个类非常相似,如绝大多数的属性和行为都相同。这时,可以选择复制原类中的语句,对其部分修改后加入新类中,但这意味着必须同时维护两个相似的Java程序。另外一种方法是通过继承,让新类自动获得被继承类中已有的属性和方法,同时添加原类中没有的属性和方法即可。例如,根据人的特征定义类Person如下:public class Person {private String name;private int age;public void Say(){System.out.println(name "can say");}public void setName(String name) {this.name=name;}public String getName(){return name;}}该类对所有人均适用,但如果根据学生的特点需要定义一学生类,则可以肯定的是学生类中,除了姓名、年龄属性外,还可能有所在****(这是一般人没有的),此外,学生的行为中还包括上学(GotoSchool)这一方法,这也是一般人没有的。因此,可以通过继承的方式建立类Student如下:继承与多态第 5 章Java程序设计(第2版)public class Student extends Person{String schoolname; //增加新的属性schoolnamepublic void GotoSchool(){ //增加新的方法GotoSchoolSystem.out.println("I am going to school");}public static void main(String\[\] args) {Student student1=new Student();student1.name="MingM";student1.age=10;//引用继承自父类的变量student1.schoolname="CQ";student1.Say(); //调用继承自父类的方法student1.GotoSchool();//调用子类新增加的方法System.out.println("My name is " student1.name);System.out.println("My schoolname is " student1.schoolname);}}程序运行结果:I can sayI am going to schoolMy name is MingMMy schoolname is CQ分析: 通过关键字extends定义了类Person的子类Student,然后添加了只有学生才有的属性schoolname和方法GotoSchool()。在main()方法中,尽管Student中没有定义变量name、age以及方法Say(),但是子类却可以通过继承的方式自动取得,并像访问自己的成员变量和方法一样引用即可。5.2类 的 继 承〖*4/5〗5.2.1继承的实现继承的实现其实非常简单,其语法格式如下:class 子类名extends父类名{类体}extends是关键字,后跟父类的类名,如果没有父类,则默认父类是java.lang.Object。Java只支持单继承,即只能有一个父类,但类之间的继承可以具有传递性。子类可以通过继承自动获得父类中访问权限为public,protected,default的成员变量和方法,但不能继承权限为private的成员变量和方法。【例5.1】类的继承示例。package code0502;class A {int i;void showi() {System.out.println("i: " i);}}class B extends A {int k