图书目录

第1章  Java语言概述 1

1.1  Java起源与发展 1

 1.1.1  Java的起源 1

 1.1.2  Java的发展历程 2

 1.1.3  Java语言的优点 3

1.2  Java平台与开发环境 3

 1.2.1  Java平台与应用领域 3

 1.2.2  JDK、JRE和JVM 4

 1.2.3  Java字节码与平台独立 4

 1.2.4  JDK的下载与安装 5

 1.2.5  Java API文档 6

1.3  Java程序基本结构 6

 1.3.1  Java程序开发步骤 6

 1.3.2  第一个程序分析 8

1.4  程序文档风格和注释 9

 1.4.1  一致的缩进和空白 9

 1.4.2  块的风格 9

 1.4.3  Java程序注释 10

1.5  Eclipse集成开发环境 10

1.6  小结 12

编程练习 12

第2章  Java语言基础 13

2.1  简单程序的开发 13

 2.1.1  从键盘读取数据 14

 2.1.2  变量与赋值 15

 2.1.3  Java标识符 15

 2.1.4  Java关键字 16

2.2  数据类型 16

 2.2.1  数据类型概述 16

 2.2.2  字面值和常量 17

 2.2.3  整数类型 17

 2.2.4  浮点类型 19

 2.2.5  字符类型 20

 2.2.6  布尔类型 21

 2.2.7  字符串类型 22

2.3  运算符 23

 2.3.1  算术运算符 23

 2.3.2  关系运算符 25

 2.3.3  逻辑运算符 25

 2.3.4  赋值运算符 26

 2.3.5  位运算符 28

 2.3.6  运算符的优先级和结合性 30

2.4  数据类型转换 31

 2.4.1  自动类型转换 31

 2.4.2  强制类型转换 32

 2.4.3  表达式中类型自动提升 33

2.5  小结 34

编程练习 34

第3章  选择与循环 36

3.1  选择 36

 3.1.1  单分支if语句 36

 3.1.2  双分支if-else语句 37

 3.1.3  嵌套的if语句和多分支的if-else语句 39

 3.1.4  条件运算符 40

 3.1.5  switch语句结构 41

3.2  循环 43

 3.2.1  while循环 43

 3.2.2  do-while循环 45

 3.2.3  for循环 45

 3.2.4  循环的嵌套 47

 3.2.5  break语句和continue语句 47

3.3  示例学习 49

 3.3.1  任意抽取一张牌 49

 3.3.2  求最大公约数 50

 3.3.3  打印输出若干素数 51

3.4  小结 52

编程练习 53

第4章  类和对象 55

4.1  面向对象概述 55

 4.1.1  OOP的产生 55

 4.1.2  面向对象的基本概念 56

 4.1.3  面向对象基本特征 57

 4.1.4  OOP的优势 58

4.2  为对象定义类 58

 4.2.1  类的定义 59

 4.2.2  对象的使用 62

 4.2.3  理解栈与堆 64

 4.2.4  用UML图表示类 64

4.3  方法设计 65

 4.3.1  如何设计方法 65

 4.3.2  方法的调用 67

 4.3.3  方法重载 67

 4.3.4  构造方法 68

 4.3.5  this关键字的使用 70

 4.3.6  方法参数的传递 71

4.4  静态变量和静态方法 72

 4.4.1  静态变量 72

 4.4.2  静态方法 74

 4.4.3  单例模式 75

 4.4.4  递归 76

4.5  对象初始化和清除 77

 4.5.1  实例变量的初始化 77

 4.5.2  静态变量的初始化 79

 4.5.3  垃圾回收器 80

 4.5.4  变量作用域和生存期 81

4.6  包与类的导入 82

 4.6.1  包 82

 4.6.2  类的导入 84

 4.6.3  Java编译单元 85

4.7  小结 85

编程练习 86

第5章  数组 90

5.1  创建和使用数组 90

 5.1.1  数组定义 90

 5.1.2  增强的for循环 93

 5.1.3  数组元素的复制 93

 5.1.4  数组参数与返回值 95

 5.1.5  可变参数的方法 96

 5.1.6  实例:随机抽取4张牌 97

 5.1.7  实例:一个整数栈类 98

5.2  Arrays类 99

 5.2.1  数组的排序 100

 5.2.2  元素的查找 100

 5.2.3  数组元素的复制 101

 5.2.4  填充数组元素 101

 5.2.5  数组的比较 102

5.3  二维数组 103

 5.3.1  二维数组定义 103

 5.3.2  数组元素的使用 104

 5.3.3  数组初始化器 105

 5.3.4  实例:矩阵乘法 105

 5.3.5  不规则二维数组 106

5.4  小结 108

编程练习 108

第6章  字符串 111

6.1  String类 111

 6.1.1  创建String类对象 111

 6.1.2  字符串基本操作 112

 6.1.3  字符串查找 114

 6.1.4  字符串转换为数组 114

 6.1.5  字符串比较 115

 6.1.6  字符串的拆分与组合 117

 6.1.7  String对象的不变性 118

 6.1.8  命令行参数 118

6.2  格式化输出 119

6.3  StringBuilder类和StringBuffer类 122

 6.3.1  创建StringBuilder对象 122

 6.3.2  StringBuilder的访问和修改 122

 6.3.3  运算符“+”的重载 124

6.4  小结 124

编程练习 124

第7章  继承与多态 126

7.1  类的继承 126

 7.1.1  类继承的实现 126

 7.1.2  方法覆盖 129

 7.1.3  super关键字 130

 7.1.4  调用父类的构造方法 132

7.2  封装性与访问修饰符 133

 7.2.1  类的访问权限 133

 7.2.2  类成员的访问权限 134

7.3  防止类扩展和方法覆盖 135

 7.3.1  final修饰类 135

 7.3.2  final修饰方法 136

 7.3.3  final修饰变量 136

7.4  抽象类 137

7.5  对象转换与多态 138

 7.5.1  对象转换 139

 7.5.2  instanceof运算符 140

 7.5.3  多态与动态绑定 140

7.6  小结 142

编程练习 142

第8章  Java常用核心类 144

8.1  Object:终极父类 144

 8.1.1  toString()方法 145

 8.1.2  equals()方法 145

 8.1.3  hashCode()方法 146

 8.1.4  clone()方法 147

 8.1.5  finalize()方法 148

8.2  Math类 149

8.3  基本类型包装类 151

 8.3.1  Character类 151

 8.3.2  Boolean类 152

 8.3.3  创建数值类对象 153

 8.3.4  数值类的常量 154

 8.3.5  自动装箱与自动拆箱 155

 8.3.6  字符串转换为基本类型 156

 8.3.7  BigInteger和BigDecimal类 156

8.4  日期-时间API 158

 8.4.1  本地日期类LocalDate 158

 8.4.2  本地时间类LocalTime 160

 8.4.3  本地日期时间类LocalDateTime 161

 8.4.4  Instant类、Duration类和Period类 162

 8.4.5  其他常用类 164

 8.4.6  日期时间解析和格式化 164

8.5  小结 166

编程练习 166

第9章  内部类、枚举和注解 168

9.1  内部类 168

 9.1.1  成员内部类 169

 9.1.2  局部内部类 170

 9.1.3  匿名内部类 171

 9.1.4  静态内部类 173

9.2  枚举类型 175

 9.2.1  枚举类型的定义 175

 9.2.2  枚举类型的方法 175

 9.2.3  枚举在switch中的应用 176

 9.2.4  枚举类型的构造方法 177

9.3  注解类型 178

 9.3.1  注解概述 179

 9.3.2  标准注解 179

 9.3.3  定义注解类型 181

 9.3.4  标准元注解 183

9.4  小结 184

编程练习 185

第10章  接口与Lambda表达式 188

10.1  接口 188

 10.1.1  接口定义 188

 10.1.2  接口的实现 189

 10.1.3  接口的继承 190

 10.1.4  接口类型的使用 192

 10.1.5  常量 192

10.2  静态方法和默认方法 192

 10.2.1  静态方法 193

 10.2.2  默认方法 193

 10.2.3  解决默认方法冲突 193

10.3  接口示例 195

 10.3.1  Comparable接口 195

 10.3.2  Comparator接口 197

10.4  Lambda表达式 198

 10.4.1  Lambda表达式简介 198

 10.4.2  函数式接口 199

 10.4.3  Lambda表达式的语法 199

 10.4.4  预定义的函数式接口 200

 10.4.5  方法引用与构造方法引用 204

10.5  小结 206

编程练习 206

第11章  泛型与集合 209

11.1  泛型介绍 209

 11.1.1  泛型类型 209

 11.1.2  泛型方法 211

 11.1.3  通配符(?)的使用 212

 11.1.4  有界类型参数 213

 11.1.5  类型擦除 214

11.2  集合框架 215

11.3  List接口及实现类 217

 11.3.1  List的操作 217

 11.3.2  ArrayList类 218

 11.3.3  遍历集合元素 219

 11.3.4  数组转换为List对象 222

 11.3.5  Vector类和Stack类 222

11.4  Set接口及实现类 222

 11.4.1  HashSet类 222

 11.4.2  用Set对象实现集合运算 223

 11.4.3  TreeSet类 223

 11.4.4  对象顺序 224

11.5  Queue接口及实现类 225

 11.5.1  Queue接口和Deque接口 226

 11.5.2  ArrayDeque类和LinkedList类 227

 11.5.3  集合转换 228

11.6  Map接口及实现类 229

 11.6.1  Map接口 229

 11.6.2  Map接口的实现类 230

11.7  Collections类 233

11.8  Stream API 235

 11.8.1  流概述 236

 11.8.2  创建与获得流 236

 11.8.3  连接流和限制流 237

 11.8.4  过滤流 238

 11.8.5  流转换 239

 11.8.6  流规约 241

 11.8.7  收集结果 241

 11.8.8  基本类型流 242

 11.8.9  并行流 243

11.9  小结 244

编程练习 245

第12章  异常处理 248

12.1  异常与异常类 248

 12.1.1  异常的概念 248

 12.1.2  异常类 249

12.2  异常处理 251

 12.2.1  异常的抛出与捕获 251

 12.2.2  try-catch-finally语句 252

 12.2.3  用catch捕获多个异常 254

 12.2.4  声明方法抛出异常 255

 12.2.5  用throw语句抛出异常 257

 12.2.6  try-with-resources语句 258

12.3  自定义异常类 260

12.4  断言 262

 12.4.1  使用断言 262

 12.4.2  开启和关闭断言 263

 12.4.3  何时使用断言 263

 12.4.4  断言示例 264

12.5  小结 266

编程练习 266

第13章  输入输出 268

13.1  二进制I/O流 268

 13.1.1  File类应用 269

 13.1.2  文本I/O与二进制I/O 270

 13.1.3  InputStream类和OutputStream类 270

 13.1.4  常用二进制I/O流 271

 13.1.5  标准输入输出流 276

13.2  文本I/O流 276

 13.2.1  Reader类和Writer类 276

 13.2.2  FileReader类和FileWriter类 277

 13.2.3  BufferedReader类和BufferedWriter类 278

 13.2.4  PrintWriter类 279

 13.2.5  使用Scanner对象 280

13.3  对象序列化 281

 13.3.1  对象序列化与对象流 281

 13.3.2  向ObjectOutputStream中写入对象 282

 13.3.3  从ObjectInputStream中读出对象 282

 13.3.4  序列化数组 284

13.4  NIO和NIO.2 286

 13.4.1  文件系统和路径 286

 13.4.2  FileSystem类 286

 13.4.3  Path对象 287

13.5  Files类操作 288

 13.5.1  创建和删除目录及文件 288

 13.5.2  文件属性操作 289

 13.5.3  文件和目录的复制与移动 291

 13.5.4  获取目录的对象 292

 13.5.5  小文件的读写 292

 13.5.6  使用Files类创建流对象 294

13.6  小结 296

编程练习 297

第14章  JavaFX基础 299

14.1  JavaFX概述 299

 14.1.1  Java GUI编程简史 299

 14.1.2  JavaFX基本概念 300

 14.1.3  添加JavaFX软件包 300

14.2  JavaFX程序基本结构 300

 14.2.1  舞台和场景 301

 14.2.2  场景图和节点 302

 14.2.3  Application类生命周期方法 303

 14.2.4  JavaFX程序启动 303

14.3  JavaFX属性与绑定 304

 14.3.1  JavaFX属性 304

 14.3.2  属性绑定 306

14.4  JavaFX界面布局 307

 14.4.1  JavaFX坐标系 308

 14.4.2  Pane面板 308

 14.4.3  HBox面板 309

 14.4.4  VBox面板 311

 14.4.5  BorderPane面板 311

 14.4.6  FlowPane面板 312

 14.4.7  GridPane面板 313

 14.4.8  StackPane面板 315

 14.4.9  AnchorPane面板 316

 14.4.10  使用CSS设置控件样式 317

14.5  Color和Font类 320

 14.5.1  Color类 320

 14.5.2  Font类 321

14.6  JavaFX形状 322

 14.6.1  Line类 322

 14.6.2  Rectangle类 325

 14.6.3  Circle类 325

 14.6.4  Ellipse类 326

 14.6.5  Arc类 326

 14.6.6  Polygon类 327

 14.6.7  Text类 328

14.7  Image和ImageView类 330

14.8  特效实现 333

 14.8.1  阴影效果 333

 14.8.2  模糊效果 334

 14.8.3  倒影效果 335

 14.8.4  发光效果 335

14.9  小结 336

编程练习 337

第15章  事件处理与常用控件 340

15.1  事件处理 340

 15.1.1  事件处理模型 340

 15.1.2  事件类和事件类型 341

 15.1.3  使用事件处理器 342

 15.1.4  动作事件 344

 15.1.5  鼠标事件 346

 15.1.6  键盘事件 348

 15.1.7  为属性添加监听器 350

15.2  常用控件 352

 15.2.1  Label类 352

 15.2.2  Button类 354

 15.2.3  TextField类和PasswordField类 357

 15.2.4  TextArea类 359

 15.2.5  CheckBox类 361

 15.2.6  RadioButton类 363

 15.2.7  ComboBox类 366

 15.2.8  Slider类 369

 15.2.9  菜单设计 370

 15.2.10  FileChooser类 376

15.3  音频和视频 380

15.4  动画 384

 15.4.1  过渡动画 384

 15.4.2  淡出效果 385

 15.4.3  移动效果 387

 15.4.4  缩放效果 388

 15.4.5  旋转效果 389

 15.4.6  时间轴动画 389

15.5  小结 392

编程练习 393

第16章  JDBC数据库编程 395

16.1  数据库系统简介 395

 16.1.1  关系数据库简述 395

 16.1.2  数据库语言SQL 396

16.2  MySQL数据库 396

 16.2.1  MySQL的下载与安装 396

 16.2.2  使用MySQL命令行工具 397

 16.2.3  使用Navicat操作数据库 400

16.3  JDBC体系结构 400

 16.3.1  JDBC访问数据库 401

 16.3.2  JDBC API介绍 401

16.4  数据库访问步骤 402

 16.4.1  加载驱动程序 402

 16.4.2  建立连接对象 403

 16.4.3  创建语句对象 405

 16.4.4  ResultSet对象 405

 16.4.5  关闭有关对象 407

16.5  访问MySQL数据库 407

 16.5.1  创建数据库和表 407

 16.5.2  访问MySQL数据库 408

16.6  使用PreparedStatement对象 409

 16.6.1  创建PreparedStatement对象 409

 16.6.2  带参数的SQL语句 410

16.7  DAO设计模式 411

16.8  可滚动和可更新的ResultSet 418

 16.8.1  可滚动的ResultSet 418

 16.8.2  可更新的ResultSet 418

16.9  小结 420

编程练习 420

第17章  并发编程基础 422

17.1  Java多线程简介 422

17.2  创建任务和线程 423

 17.2.1  实现Runnable接口 424

 17.2.2  继承Thread类 425

 17.2.3  主线程 426

17.3  线程的状态与调度 427

 17.3.1  线程的状态 427

 17.3.2  线程的优先级和调度 427

 17.3.3  控制线程的结束 429

17.4  线程同步与对象锁 430

 17.4.1  线程冲突与原子操作 430

 17.4.2  方法同步 431

 17.4.3  块同步 432

17.5  线程协调 433

 17.5.1  不正确的设计 433

 17.5.2  监视器模型 435

17.6  并发工具 437

 17.6.1  原子变量 437

 17.6.2  Executor和ExecutorService 438

 17.6.3  Callable和Future 439

 17.6.4  使用Lock锁定对象 440

17.7  小结 442

编程练习 443

第18章  Java网络编程 445

18.1  网络概述 445

 18.1.1  网络分层与协议 445

 18.1.2  客户/服务器结构 446

 18.1.3  IP地址和域名 446

 18.1.4  端口号与套接字 447

18.2  Java套接字通信 448

 18.2.1  套接字API 449

 18.2.2  简单的客户和服务器程序 450

 18.2.3  服务多个客户 452

18.3  数据报通信 455

 18.3.1  数据报通信概述 455

 18.3.2  DatagramSocket类和DatagramPacket类 456

 18.3.3  简单的UDP通信例子 457

18.4  URL类编程 459

 18.4.1  理解HTTP 459

 18.4.2  URL和URL类 461

 18.4.3  URLConnection类 464

18.5  小结 467

编程练习 467

参考文献 469