Java语言的生命力毋庸置疑,1991年由Sun公司(后被Oracle公司收购)开发。2014年,Java发布了Java SE 8版本,它以优秀的性质驰骋在各个领域,以开源建设的方式不断地为其注入新鲜血液。思考了许久怎样写此书才能打好Java的根基,为今后Struts、Spring、EJB等的学习奠定坚实的基础;如何能让年轻的学习者们轻松、高效地完成学习,不会感觉代码是枯燥冰冷的字符,而是悦动在指尖的一串串的音符…。带着让学习者以享受的姿态步入Java程序员行列的希冀,最终确定了如下编写思想。
(1)从面向对象的语言走进面向对象的思想任何一门计算机语言的学习都不仅仅是熟知语法的过程。计算机语言的语法就如音乐中的音符,它们会在不同人的笔下诞生奇妙的乐谱,那是作曲家赋予音符的灵魂。面向对象的思想就是面向对象语言的灵魂。
本书在讲述Java语法知识的同时,更注重面向对象思想的学习和贯彻。从面向对象分析出发,使用面向对象工具UML类图描述类结构及类与类之间的关系;在系统设计和组织程序架构时,引入面向对象设计中的经典原则和设计模式。从学习伊始就培养面向对象的视角和规范的编程方式,不仅要写出代码,而且要写出专业、漂亮的代码。
(2)使用图表增强文字的表现力相对于文字而言,图可以更形象、立体地展示知识及彼此间的联系,表可以梳理、对比相关、相似的知识点。相信读者间都会有一种共识,如果面对一份长篇大论,那么你的关注点首先会集中到穿插在文字中的图或表,因为从图表中可以快速提取到文字的主旨、脉络和精华;而且我也在猜想,从小看漫画长大的年轻一代会对图表具有更高的敏感度。
本书尽可能地为抽象、不易单纯通过语言表述清楚、信息量大、知识庞杂的部分设计了图表,力求简明扼要地展示知识结构。
另外,本书各章都使用思维导图从更高的角度对整章知识、案例进行了梳理,将看似零散的文字浓缩在一张图中,提纲挈领,将知识从点连接成线,再构建为面,最终立体化,达到读书“从物理上将书变厚,从逻辑上将书变薄”的效果。
(3)知其然亦知其所以然坚实的基础是进阶的基石。本书注重知识背后隐藏的原理和细节,培养读者从why和how的角度构建学习的习惯,使学习不仅知其然,更能做到知其所以然,以扎实的基本功为后续的学习打好根基。本书架构如下:
本书由宋晏、杨国兴主编,胡倩茹(河北大学)、陈晓美副主编,参加编写工作的还有刘勇、严婷、吕东艳、朱红、张子萍、张小静。
由于时间仓促,书中难免有疏漏和不足之处,敬请广大读者批评指正。
机工授权书
前言
第1章Java程序设计概述
1.1Java程序平台
1.2Java的特性
1.3Java程序设计环境
1.3.1下载、安装和了解JDK
1.3.2集成开发环境Eclipse
1.4Java应用程序
1.4.1Java应用程序的编写
1.4.2命令行方式下的编译和运行
1.4.3使用Eclipse开发Java程序
1.5习题
1.6实验指导
1.7本章思维导图第2章Java语言基础
2.1标识符和关键字
2.2基本数据类型与变量、常量
2.2.1Java中的整数类型
2.2.2Java中的字符类型
2.2.3浮点类型
2.2.4布尔类型
2.2.5符号常量
2.3运算符
2.3.1算术运算符
2.3.2关系运算符和逻辑运算符
2.3.3位运算符
2.3.4赋值运算符
2.3.5运算符的优先级与结合性
2.4表达式的类型转换
2.4.1数据类型自动转换的规则
2.4.2强制类型转换
2.5流程控制
2.5.1if语句
2.5.2switch语句
2.5.3while循环语句
2.5.4for循环语句
2.5.5do-while循环语句
2.5.6break语句
2.5.7循环的嵌套
2.6方法
2.6.1方法的定义
2.6.2方法的重载
2.7综合实践——简易算术计算器
2.8习题
2.9实验指导
2.10本章思维导图第3章数组
3.1声明数组
3.2创建数组对象
3.3使用数组
3.3.1数组元素的引用
3.3.2Java方法中的不定长参数与数组
3.4多维数组
3.4.1二维数组的声明和创建
3.4.2不规则二维数组
3.4.3二维数组元素的引用
3.5Java中的for each循环
3.6Arrays类
3.6.1sort()方法
3.6.2copyOf()方法
3.7综合实践——学生成绩查询系统
3.7.1查询系统的数据结构
3.7.2模块化设计
3.7.3控制台命令的读取和控制run()
3.7.4查询某人某门课成绩get()
3.8习题
3.9实验指导
3.10探究与实践——两人对弈的五子棋游戏
3.11本章思维导图第4章封装与类
4.1封装的意义
4.2定义类
4.2.1面向对象的分析
4.2.2使用class定义类
4.3对象和引用
4.3.1对象和引用的关系
4.3.2this引用
4.4方法的参数传递
4.5关于static
4.5.1static成员
4.5.2变量的使用规则
4.5.3static代码块
4.5.4类常量的定义
4.6包
4.6.1包的创建
4.6.2类的导入
4.6.3含包定义的类的编译及执行
4.6.4classpath环境变量的设置
4.6.5Eclipse下创建package
4.7综合实践——酒店前台客房管理系统
4.7.1类的设计——组合关系
4.7.2客房编号的处理方法
4.7.3Room类设计
4.7.4Hotel类设计
4.7.5客户端Client类实现
4.8习题
4.9实验指导
4.10本章思维导图第5章类的继承
5.1继承
5.1.1继承的概念
5.1.2继承的实现
5.1.3类成员的访问控制
5.2重写父类方法
5.2.1重写及其意义
5.2.2Object类与重写toString()方法
5.2.3调用父类被重写的方法
5.2.4Object类的clone()方法与深、浅复制
5.3子类对象的构造
5.3.1子类对象的构造过程
5.3.2super与this调用构造方法
5.4Java修饰符
5.4.1final修饰符
5.4.2Java修饰符之间的关系
5.5继承和组合
5.5.1继承复用
5.5.2组合复用
5.6习题
5.7实验指导
5.8本章思维导图第6章多态性
6.1多态
6.1.1多态性
6.1.2静态绑定和动态绑定
6.1.3instanceof运算符
6.2抽象类
6.2.1抽象类及抽象方法的定义
6.2.2为什么设计抽象类
6.2.3开闭原则
6.3接口
6.3.1接口的定义和实现
6.3.2接口与抽象类的区别
6.4面向接口的编程
6.4.1案例分析
6.4.2面向接口编程的代码组织
6.5综合实践——格式化输出学生对象数据
6.5.1系统架构
6.5.2面向接口编程的代码
6.6习题
6.7实验指导
6.8思维导图
6.8.1本章思维导图
6.8.2面向对象部分思维导图第7章常用工具类
7.1字符串处理类
7.1.1Java中String对象的管理
7.1.2String类的常用方法
7.1.3StringBuilder和StringBuffer类
7.2正则表达式
7.2.1正则表达式的语法
7.2.2String类中操作正则表达式的方法
7.3包装类
7.3.1Integer类
7.3.2自动封箱和解封
7.4日期类
7.4.1Date类
7.4.2Calendar类
7.4.3SimpleDateFormat类
7.4.4阅读API文档
7.5习题
7.6实验指导
7.7本章思维导图第8章集合
8.1Java中的集合框架
8.1.1集合框架的常用部分
8.1.2迭代器Iterator接口
8.2List及其实现类
8.2.1List接口
8.2.2ArrayList
8.2.3LinkedList
8.3Set及其实现类
8.3.1Set接口
8.3.2HashSet
8.3.3TreeSet
8.4Map及其实现类
8.4.1Map接口
8.4.2HashMap
8.4.3Hashtable及其子类Properties
8.5泛型
8.5.1泛型的意义
8.5.2认识和使用泛型
8.6Collections集合工具类
8.6.1List的增补功能
8.6.2多线程封装
8.7回首Java集合框架
8.8综合实践——控制台版考试系统
8.8.1类的设计
8.8.2代码
8.9习题
8.10实验指导
8.11本章思维导图第9章异常处理
9.1Java异常体系
9.2异常的捕获和处理
9.2.1try-catch-finally语句
9.2.2try-catch-finally语句的执行过程
9.3使用throws抛出异常
9.4自定义异常类
9.4.1自定义异常类的方法
9.4.2throw抛出异常
9.4.3异常处理的5个关键字
9.5综合实践——用户管理系统及其异常类设计
9.5.1系统设计
9.5.2自定义异常类
9.5.3UserDaoForMap类
9.5.4Application类
9.5.5Test类
9.6习题
9.7实验指导
9.8本章思维导图第10章图形用户界面与事件处理
10.1AWT组件及应用
10.1.1AWT和Swing概述
10.1.2AWT组成
10.1.3AWT的容器
10.1.4布局管理器
10.2事件处理
10.2.1事件处理的原理
10.2.2利用成员内部类实现事件监听
10.2.3利用匿名内部类实现事件监听
10.2.4适配器模式实现事件监听
10.2.5实现计算器的功能部分
10.3Swing组件
10.4综合实践——用户管理系统与常用Swing组件的应用
10.4.1主界面与Swing组件的应用
10.4.2注册界面与Swing组件的应用
10.4.3浏览用户界面与JTable组件的应用
10.5习题
10.6实验指导
10.7本章思维导图第11章多线程
11.1线程的概念
11.2线程的创建和执行
11.2.1继承Thread类创建线程
11.2.2实现Runnable接口创建线程
11.3线程的状态与生命周期
11.3.1新建和就绪状态
11.3.2运行状态
11.3.3阻塞状态
11.3.4死亡状态
11.4线程优先级与线程调度策略
11.5线程同步
11.5.1数据共享问题
11.5.2同步和锁机制
11.5.3同步代码块
11.5.4同步方法
11.5.5线程安全的集合类
11.6线程间的通信
11.6.1wait()和notify()方法
11.6.2消费者和生产者模型
11.6.3使用BlockingQueue控制线程通信
11.7习题
11.8实验指导
11.9本章思维导图第12章输入/输出流
12.1Java流的类层次结构
12.2文件
12.2.1File类
12.2.2RandomAccessFile类
12.3字节流
12.3.1抽象类InputStream和OutputStream
12.3.2文件流FileInputStream和FileOutputStream
12.3.3缓冲流BufferedInputStream和BufferedOutputS
tream
12.3.4数据过滤流DataInputStream和DataOutputStrea
m
12.3.5打印流PrintStream
12.3.6序列化接口Serializable与对象流ObjectInputS
tream和ObjectOutputStream
12.3.7字节数组流ByteArrayInputStream和ByteArrayO
utputStream
12.4字符流
12.4.1抽象类Reader和Writer
12.4.2转换流InputStreamReader和OutputStreamWrite
r
12.4.3FileReader和FileWriter
12.4.4BufferedReader类
12.4.5PrintWriter类
12.5输入/输出流汇总
12.6习题
12.7实验指导
12.8本章思维导图第13章数据库访问技术
13.1MySQL数据库与SQL语法
13.1.1MySQL数据库的安装
13.1.2MySQL数据库的常用命令
13.1.3SQL语句
13.2JDBC的体系结构和JDBC驱动程序的实现方式
13.2.1JDBC的体系结构
13.2.2JDBC驱动程序的实现方式
13.3建立JDBC数据库连接
13.3.1JDBC API的主要类和接口
13.3.2连接数据库
13.4使用JDBC访问数据库
13.4.1Statement与数据表的增、删、改
13.4.2PreparedStatement与数据表的增、删、改
13.4.3数据表的查询与ResultSet
13.5综合实践——数据库访问的开发模式
13.5.1基于数据库存储的用户管理系统
13.5.2业务层——封装DAO中的方法
13.5.3应用层——调用业务层方法完成系统功能
13.6习题
13.7实验指导
13.8探究与实践——用户管理系统的权限管理
13.9本章思维导图参考文献