目录 第一篇入门篇 第1章职员类: 对象与类3 1.1Java类的设计4 1.1.1从现实世界到Java类代码4 1.1.2关于Java类组成的说明7 习题9 知识链接9 1.2Java类的方法设计9 1.2.1方法结构9 1.2.2方法参数10 1.2.3方法调用与方法返回10 习题13 知识链接14 1.3主方法与类的测试14 1.3.1对象生成的过程14 1.3.2构造器16 1.3.3对象成员的访问17 1.3.4主方法与主类17 1.3.5在Eclipse中测试Employee类18 1.3.6主方法必须作为一个类的成员18 习题20 知识链接21 1.4内容扩展21 1.4.1this关键字21 1.4.2方法参数的传递23 1.4.3数据域的封装24 1.5本章小结25 习题26 知识链接28第2章算术计算器类: 流程控制结构29 2.1二项式算术计算器类29 2.1.1计算器类设计29 2.1.2变量与赋值运算符 30 2.1.3算术运算符33 2.1.4表达式与运算规则33 习题34 知识链接35 2.2二项式算术计算器类的测试35 2.2.1Calculator类的测试主函数35 2.2.2从键盘输入测试数据36 2.2.3用选择结构规避被零除风险37 2.2.4用异常处理规避被零除风险39 习题42 知识链接43 2.3能自动识别计算类型的二项式计算器类43 2.3.1用ifelse选择结构实现calculate()方法43 2.3.2用switch选择结构实现calculate()方法45 习题47 知识链接48 2.4用while结构实现多项式算术计算器48 2.4.1while循环结构48 2.4.2用while结构实现的多项式算术计算器48 习题49 2.5内容扩展50 2.5.1逻辑运算符50 2.5.2抛出异常52 2.5.3实例学习——有理数的类封装54 2.6本章小结58 习题58第3章算法基础: 穷举、迭代与递归60 3.1素数序列产生器60 3.1.1问题描述与对象建模60 3.1.2isPrime()判定素数方法的实现61 3.1.3PrimeGenerator类的实现64 习题67 3.2阶乘计算器的迭代实现67 3.2.1问题描述与对象建模67 3.2.2FactorialCalculator类的实现68 习题69 3.3阶乘计算器的递归实现69 3.3.1什么是递归69 3.3.2阶乘的递归计算69 3.3.3用递归实现阶乘计算器70 习题71 3.4内容扩展71 3.4.1用静态成员变量记录素数的个数71 3.4.2静态成员方法——类方法74 3.4.3变量的作用域和生命期76 3.4.4基本类型打包79 3.5本章小结81 习题81 知识链接82第4章扑克游戏: 数组、字符串与ArrayList类83 4.1一维数组与扑克牌的表示和存储83 4.1.1数组的概念83 4.1.2数组的声明与内存分配83 4.1.3数组的初始化85 4.1.4访问一维数组86 习题89 4.2洗牌方法90 4.2.1随机数与Random类90 4.2.2洗牌方法设计91 4.2.3含有洗牌方法的扑克游戏类设计93 4.2.4一维数组和方法94 4.2.5排序与查找96 习题98 知识链接99 4.3扑克的发牌与二维数组99 4.3.1基本的发牌算法99 4.3.2用二维数组表示玩家手中的牌100 4.3.3使用二维数组的发牌方法103 4.3.4含有洗牌、发牌方法的扑克游戏类设计103 4.3.5二维数组和方法105 习题106 4.4字符串107 4.4.1String类型107 4.4.2用字符串数组存储纸牌107 4.4.3不可变字符串与可变字符串110 习题112 知识链接113 4.5对象数组与ArrayList类113 4.5.1将纸牌抽象成类113 4.5.2用对象数组存储纸牌114 4.5.3ArrayList类117 习题122 4.6本章小结122 习题122 知识链接123第5章类的继承124 5.1类的复用: 组合与继承124 5.1.1类的组合124 5.1.2类的继承126 5.1.3super关键字131 5.1.4继承关系下的构造方法调用132 习题135 5.2Java类层次中的信息隐藏与保护137 5.2.1Java类层次中类的访问权限控制137 5.2.2类成员的访问权限控制137 5.2.3private构造器138 5.2.4final关键字140 习题141 5.3类层次中的类型转换142 5.3.1类层次中的赋值兼容规则142 5.3.2类型转换与类型测试143 习题144 5.4类层次中方法覆盖与隐藏145 5.4.1派生类实例方法覆盖基类中签名相同的实例方法145 5.4.2用@Override标注覆盖146 5.4.3派生类静态方法隐藏基类中签名相同的静态方法148 习题149 5.5类层次中的多态150 5.5.1继承关系下的多态150 5.5.2JVM的静态绑定与动态绑定151 习题153 5.6内容扩展155 5.6.1Object类155 5.6.2Java异常类和错误类体系159 5.6.3用户自定义异常161 5.6.4实例学习——两点成线162 5.7本章小结165 习题166 知识链接167第6章抽象类与接口168 6.1圆、三角形和矩形168 6.1.13个独立的类: Circle、Rectangle和Triangle168 6.1.2枚举170 习题172 6.2抽象类173 6.2.1由具体类抽象出抽象类173 6.2.2由抽象类派生出实例类175 6.2.3抽象类小结179 习题179 知识链接180 6.3接口180 6.3.1接口及其特点180 6.3.2接口的实现类182 6.3.3接口之间的继承184 6.3.4基于接口的动态绑定185 6.3.5接口的default方法和static方法185 习题187 知识链接188 6.4本章小结188 习题189 第二篇应用篇第7章输入/输出流与对象序列化193 7.1File 类193 习题196 7.2流196 7.2.1流的基本概念196 7.2.2流的分类197 习题198 7.3字节流与字符流198 7.3.1字节流199 7.3.2字符流203 习题206 知识链接207 7.4缓冲流与转换流207 7.4.1缓冲流207 7.4.2转换流209 习题211 7.5打印流212 7.5.1PrintStream类212 7.5.2PrintWriter类213 习题215 知识链接215 7.6对象序列化216 7.6.1对象序列化概念216 7.6.2序列化和反序列化步骤216 习题219 7.7本章小结219 习题220 知识链接220第8章Java网络程序设计221 8.1IP地址与InetAddress类221 8.1.1IP协议与IP地址221 8.1.2InetAddress类222 习题223 8.2Java Socket概述223 8.2.1Socket的概念223 8.2.2客户端/服务器工作模式224 习题225 8.3面向TCP的Java Socket程序设计225 8.3.1Socket类和ServerSocket类225 8.3.2TCP Socket通信过程227 8.3.3TCP Socket 程序设计227 习题231 知识链接232 8.4面向UDP的Java程序设计232 8.4.1DatagramPacket类233 8.4.2DatagramSocket类234 8.4.3UDP Socket程序设计237 习题240 8.5网络资源访问240 8.5.1URI、URL和URN240 8.5.2URL类242 8.5.3URLConnection类244 习题246 知识链接246 8.6本章小结246 习题246第9章图形用户界面开发247 9.1JavaFX基础247 9.1.1JavaFX程序的基本结构247 9.1.2舞台和场景249 9.1.3场景图和节点250 9.1.4Java坐标系250 习题250 知识链接252 9.2布局面板252 9.2.1Pane252 9.2.2FlowPane254 9.2.3GridPane256 9.2.4BorderPane257 9.2.5StackPane259 9.2.6HBox和VBox261 习题263 知识链接264 9.3事件驱动编程基础264 9.3.1事件概述264 9.3.2事件类266 9.3.3事件处理流程268 习题270 9.4事件处理器270 9.4.1内部类处理器271 9.4.2匿名内部类处理器273 9.4.3Lambda表达式处理器275 习题276 知识链接277 9.5常用UI组件277 习题283 知识链接284 9.6本章小结284 习题284第10章JDBC数据库编程286 10.1JDBC概述286 10.1.1JDBC的组成与工作过程286 10.1.2JDBC API及其对JDBC过程的支持287 习题288 10.2加载JDBC驱动289 10.2.1JDBC数据库驱动程序的类型289 10.2.2JDBC驱动类名与JDBC驱动程序的下载291 10.2.3DriverManager类292 10.2.4注册Driver293 习题296 10.3连接数据源297 10.3.1数据源描述规则——JDBC URL297 10.3.2获取Connection对象297 10.3.3连接过程中的异常处理302 10.3.4Connection接口的常用方法302 习题303 知识链接303 10.4创建SQL工作空间进行数据库操作303 10.4.1SQL303 10.4.2创建SQL工作空间306 10.4.3用Statement实例封装SQL语句307 习题310 10.5处理结果集311 10.5.1结果集游标的管理311 10.5.2getXxx()方法311 10.5.3updateXxx()方法312 10.5.4关闭数据库连接312 10.5.5JDBC数据库查询实例312 习题314 10.6PreparedStatement接口315 10.6.1用PreparedStatement实例封装SQL语句的特点315 10.6.2PreparedStatement接口的主要方法316 10.6.3PreparedStatement对象操作SQL语句的步骤316 习题320 知识链接321 10.7事务处理322 10.7.1事务的概念322 10.7.2Connection类中有关事务处理的方法322 10.7.3JDBC事务处理程序的基本结构323 习题324 10.8DAO模式325 10.8.1DAO概述325 10.8.2DAO模式的基本结构326 10.8.3DAO程序举例328 习题335 知识链接336 10.9本章小结336 习题336 知识链接337 第三篇晋级篇第11章设计模式341 11.1设计模式概述341 11.1.1什么是设计模式341 11.1.2为什么要学习设计模式341 11.1.3设计模式的分类342 习题343 知识链接344 11.2简单工厂模式344 11.2.1简单工厂模式的定义344 11.2.2简单工厂模式的结构345 11.2.3简单工厂模式实例345 11.2.4简单工厂模式的优点和缺点347 11.2.5简单工厂模式的适用场景349 习题349 知识链接349 11.3工厂方法模式350 11.3.1工厂方法模式的定义350 11.3.2工厂方法模式的结构350 11.3.3工厂方法模式实例351 11.3.4工厂方法模式的优点和缺点352 11.3.5工厂方法模式的适用场景353 习题354 知识链接355 11.4外观模式355 11.4.1外观模式的定义355 11.4.2外观模式的结构355 11.4.3外观模式的实例356 11.4.4外观模式的优点和缺点357 11.4.5外观模式的适用场景358 习题358 知识链接359 11.5适配器模式359 11.5.1适配器模式的定义359 11.5.2适配器模式的结构360 11.5.3适配器模式的实例361 11.5.4适配器模式的优点和缺点362 11.5.5适配器模式的适用场景363 习题364 知识链接364 11.6观察者模式364 11.6.1观察者模式的定义364 11.6.2观察者模式的结构365 11.6.3观察者模式的实例366 11.6.4观察者模式的优点和缺点368 11.6.5观察者模式的适用场景369 习题369 知识链接370 11.7策略模式370 11.7.1不用策略模式的商场营销解决方案370 11.7.2策略模式的定义372 11.7.3策略模式的结构373 11.7.4采用策略模式的商场营销解决方案373 11.7.5策略模式与简单工厂模式结合377 11.7.6策略模式的优点和缺点379 11.7.7策略模式的适用场景379 习题379 知识链接380 11.8本章小结380 习题381 知识链接381第12章Java泛型编程与集合框架382 12.1泛型382 12.1.1泛型基础382 12.1.2泛型方法384 12.1.3泛型接口386 12.1.4多泛型类386 习题387 知识链接388 12.2泛型语法扩展388 12.2.1泛型通配符388 12.2.2泛型设限389 12.2.3泛型嵌套391 习题392 12.3Java集合中主要接口简介392 习题393 知识链接394 12.4Collection接口及其子接口394 12.4.1Collection接口394 12.4.2List集合 395 12.4.3Set集合398 习题402 知识链接403 12.5聚集的标准输出403 12.5.1Iterator接口403 12.5.2foreach404 习题405 12.6Map接口类及其应用406 12.6.1Map接口的定义与方法406 12.6.2Map.Entry接口406 12.6.3HashMap类407 12.6.4TreeMap类409 习题410 12.7本章小结411 习题411 知识链接412第13章Java多线程413 13.1Java多线程概述413 13.1.1进程与线程413 13.1.2Java线程的生命周期及实现方式415 13.1.3Java多线程程序实例: 室友叫醒425 13.1.4线程调度与线程优先级429 习题429 知识链接431 13.2java.lang.Thread类431 13.2.1Thread类的构造器431 13.2.2Thread类中的优先级别静态常量431 13.2.3Thread类中影响线程状态的方法432 13.2.4Thread类中的一般方法432 13.2.5Thread类从Object继承的方法433 习题433 知识链接434 13.3线程池434 13.3.1线程池概念434 13.3.2Java提供的线程池434 习题438 知识链接439 13.4多线程管理439 13.4.1多线程同步共享资源439 13.4.2线程死锁问题447 13.4.3线程组447 习题448 13.5本章小结449 习题449第14章函数式编程451 14.1Lambda表达式451 14.1.1从匿名类到 Lambda 的转换451 14.1.2Lambda表达式的语法453 习题455 14.2函数式接口456 14.2.1函数式接口概述456 14.2.2自定义函数式接口457 14.2.3Java内置函数式接口459 习题463 14.3方法引用464 14.3.1方法引用分类464 14.3.2静态方法引用465 14.3.3实例方法引用466 14.3.4对象方法引用467 14.3.5构造器引用468 14.3.6数组引用469 习题470 14.4Stream470 14.4.1Stream概述470 14.4.2Stream的操作流程471 14.4.3Stream 操作472 习题480 知识链接480 14.5本章小结480 习题481附录A符号483附录BJava运行时异常类和错误类485附录CJava常用工具包488附录D知识链接二维码目录489参考文献492