Java 8编程入门官方教程 第六版
作者:(美)施密特(Schildt H.)著
出版时间:2015
内容简介
Herbert Schildt是Java语言的权威,他撰写的程序设计图书大约有30多本,在全世界销售了数百万册,并被翻译成了多种语言。虽然他对计算机的方方面面都很感兴趣,但是主要关注点是计算机语言,包括编译器、解释器和机器人控制语言。他的畅销书有Java: The Complete Reference、Herb Schildt’s JavaProgramming Cookbook和Swing: ABeginner’s Guide 。主要特色● 关键技能和概念:在每章开头列出了该章介绍的技能与概念● 专家问答:以问答形式提供了相关信息和实用的提示● 编程练习:示范如何应用某种技能的编程练习● 自测题:每章最后有一些测试,检验对该章内容的理解程度,以提升Java技能● 语法注释:示例代码中有描述所演示的编程技巧的注释
目录
第1章 Java基础 1 1.1 Java的起源 2 1.1.1 Java与C和C++的关系 3 1.1.2 Java与C#的关系 3 1.2 Java对Internet的贡献 4 1.2.1 Java applet 4 1.2.2 安全性 4 1.2.3 可移植性 5 1.3 Java的魔法:字节码 5 1.4 Java的主要术语 6 1.5 面向对象程序设计 7 1.5.1 封装 8 1.5.2 多态性 8 1.5.3 继承 9 1.6 获得Java开发工具包 9 1.7 第一个简单的程序 10 1.7.1 输入程序 10 1.7.2 编译程序 11 1.7.3 逐行分析第一个程序 11 1.8 处理语法错误 13 1.9 第二个简单程序 14 1.10 另一种数据类型 16 1.11 两条控制语句 18 1.11.1 if语句 18 1.11.2 for循环语句 20 1.12 创建代码块 21 1.13 分号和定位 22 1.14 缩进原则 23 1.15 Java关键字 25 1.16 Java标识符 25 1.17 Java类库 26 第2章 数据类型与运算符 29 2.1 数据类型为什么重要 30 2.2 Java的基本类型 30 2.2.1 整数类型 31 2.2.2 浮点型 32 2.2.3 字符型 33 2.2.4 布尔类型 34 2.3 字面值 36 2.3.1 十六进制、八进制和二进制字面值 36 2.3.2 字符转义序列 37 2.3.3 字符串字面值 37 2.4 变量详解 38 2.4.1 初始化变量 39 2.4.2 动态初始化 39 2.5 变量的作用域和生命期 39 2.6 运算符 42 2.7 算术运算符 42 2.8 关系运算符和逻辑运算符 44 2.9 短路逻辑运算符 46 2.10 赋值运算符 47 2.11 速记赋值 47 2.12 赋值中的类型转换 48 2.13 不兼容类型的强制转换 50 2.14 运算符优先级 51 2.15 表达式 53 2.15.1 表达式中的类型转换 53 2.15.2 间距和圆括号 55 第3章 程序控制语句 57 3.1 从键盘输入字符 58 3.2 if语句 59 3.2.1 嵌套if语句 60 3.2.2 if-else-if阶梯状结构 61 3.3 switch语句 62 3.4 for循环 68 3.4.1 for循环的一些变体 69 3.4.2 缺失部分要素的for循环 70 3.4.3 无限循环 71 3.4.4 没有循环体的循环 72 3.4.5 在for循环内部声明循环控制变量 72 3.4.6 增强型for循环 73 3.5 while循环 73 3.6 do-while循环 75 3.7 使用break语句退出循环 79 3.8 将break语句作为一种goto语句使用 81 3.9 使用continue语句 85 3.10 嵌套循环 89 第4章 类、对象和方法 93 4.1 类的基础知识 94 4.1.1 类的基本形式 94 4.1.2 定义类 95 4.2 如何创建对象 98 4.3 引用变量和赋值 98 4.4 方法 99 4.5 从方法返回值 101 4.6 返回值 102 4.7 使用形参 104 4.8 构造函数 112 4.9 带形参的构造函数 113 4.10 深入介绍new运算符 115 4.11 垃圾回收 115 4.12 this关键字 119 第5章 其他数据类型与运算符 123 5.1 数组 124 5.2 多维数组 129 5.3 不规则数组 130 5.3.1 三维或更多维的数组 131 5.3.2 初始化多维数组 131 5.4 另一种声明数组的语法 132 5.5 数组引用赋值 133 5.6 使用length成员 134 5.7 for-each形式的循环 139 5.7.1 迭代多维数组 142 5.7.2 应用增强型for循环 143 5.8 字符串 144 5.8.1 构造字符串 144 5.8.2 操作字符串 145 5.8.3 字符串数组 147 5.8.4 字符串是不可变的 148 5.8.5 使用String控制switch语句 149 5.9 使用命令行实参 150 5.10 位运算符 151 5.10.1 位运算符的与、或、异 或和非 151 5.10.2 移位运算符 155 5.10.3 位运算符的赋值速记符 157 5.11 ?运算符 160 第6章 方法和类详解 163 6.1 控制对类成员的访问 164 6.2 向方法传递对象 169 6.3 返回对象 173 6.4 方法重载 174 6.5 重载构造函数 179 6.6 递归 184 6.7 理解static关键字 186 6.8 嵌套类和内部类 192 6.9 varargs(可变长度实参) 195 6.9.1 varargs基础 195 6.9.2 重载varargs方法 198 6.9.3 varargs和歧义 199 第7章 继承 203 7.1 继承的基础知识 204 7.2 成员访问与继承 207 7.3 构造函数和继承 209 7.4 使用super调用超类构造函数 211 7.5 使用super访问超类成员 215 7.6 创建多级层次结构 218 7.7 何时调用构造函数 221 7.8 超类引用和子类对象 222 7.9 方法重写 227 7.10 重写的方法支持多态性 229 7.11 为何使用重写方法 231 7.12 使用抽象类 235 7.13 使用final 239 7.13.1 使用final防止重写 239 7.13.2 使用final防止继承 239 7.13.3 对数据成员使用final 240 7.14 Object类 241 第8章 包和接口 243 8.1 包 244 8.1.1 定义包 244 8.1.2 寻找包和CLASSPATH 245 8.1.3 一个简短的包示例 245 8.2 包和成员访问 247 8.3 理解被保护的成员 249 8.4 导入包 251 8.5 Java的类库位于包中 252 8.6 接口 253 8.7 实现接口 254 8.8 使用接口引用 257 8.9 接口中的变量 264 8.10 接口能够被扩展 265 8.11 默认接口方法 266 8.11.1 默认方法的基础知识 266 8.11.2 默认方法的实际应用 268 8.11.3 多继承问题 269 8.12 在接口中使用静态方法 270 8.13 有关包和接口的最后思考 271 第9章 异常处理 273 9.1 异常的层次结构 274 9.2 异常处理基础 274 9.2.1 使用关键字try和catch 275 9.2.2 一个简单的异常示例 276 9.3 未捕获异常的结果 277 9.4 使用多个catch语句 280 9.5 捕获子类异常 281 9.6 try代码块可以嵌套 282 9.7 抛出异常 283 9.8 Throwable详解 285 9.9 使用finally 286 9.10 使用throws语句 288 9.11 新增的3种异常功能 289 9.12 Java的内置异常 291 9.13 创建异常子类 293 第10章 使用I/O 299 10.1 Java的I/O基于流 300 10.2 字节流和字符流 300 10.3 字节流类 301 10.4 字符流类 301 10.5 预定义流 302 10.6 使用字节流 302 10.6.1 读取控制台输入 303 10.6.2 写入控制台输出 304 10.7 使用字节流读写文件 305 10.7.1 从文件输入 305 10.7.2 写入文件 309 10.8 自动关闭文件 311 10.9 读写二进制数据 313 10.10 随机访问文件 317 10.11 使用Java字符流 319 10.11.1 使用字符流的控制台输入 320 10.11.2 使用字符流的控制台输出 323 10.12 使用字符流的文件I/O 324 10.12.1 使用FileWriter 324 10.12.2 使用FileReader 325 10.13 使用Java的类型封装器转换数值字符串 326 第11章 多线程程序设计 337 11.1 多线程的基础知识 338 11.2 Thread类和Runnable接口 339 11.3 创建一个线程 339 11.4 创建多个线程 346 11.5 确定线程何时结束 348 11.6 线程的优先级 351 11.7 同步 354 11.8 使用同步方法 354 11.9 同步语句 357 11.10 使用notify( )、wait( )和notifyAll( )的线程通信 360 11.11 线程的挂起、继续执行和停止 365 第12章 枚举、自动装箱、静态导入和注释 371 12.1 枚举 372 12.2 Java语言中的枚举是类类型 374 12.3 values( )和valueOf( )方法 374 12.4 构造函数、方法、实例变量和枚举 376 12.5 枚举继承enum 378 12.6 自动装箱 384 12.7 类型封装器 385 12.8 自动装箱的基础知识 386 12.9 自动装箱和方法 387 12.10 发生在表达式中的自动装箱/自动拆箱 388 12.11 静态导入 390 12.12 注解(元数据) 393 第13章 泛型 397 13.1 泛型的基础知识 398 13.2 一个简单的泛型示例 399 13.2.1 泛型只能用于引用类型 402 13.2.2 泛型类型是否相同基于其类型实参 402 13.2.3 带有两个类型形参的泛型类 402 13.2.4 泛型类的一般形式 404 13.3 约束类型 404 13.4 使用通配符实参 407 13.5 约束通配符 410 13.6 泛型方法 413 13.7 泛型构造函数 415 13.8 泛型接口 416 13.9 原类型和遗留代码 422 13.10 使用菱形运算符进行类型推断 425 13.11 擦除特性 426 13.12 歧义错误 426 13.13 一些泛型限制 427 13.13.1 类型形参不能实例化 427 13.13.2 对静态成员的限制 428 13.13.3 泛型数组限制 428 13.13.4 泛型异常限制 429 13.14 继续学习泛型 429 第14章 lambda表达式和方法引用 431 14.1 lambda表达式简介 432 14.1.1 lambda表达式的基础知识 432 14.1.2 函数式接口 433 14.1.3 几个lambda表达式示例 435 14.2 块lambda表达式 440 14.3 泛型函数式接口 441 14.4 lambda表达式和变量捕获 447 14.5 从 lambda表达式中抛出异常 448 14.6 方法引用 449 14.6.1 静态方法的方法引用 449 14.6.2 实例方法的方法引用 451 14.7 构造函数引用 455 14.8 预定义的函数式接口 457 第15章 applet、事件和其他主题 461 15.1 applet的基础知识 462 15.2 applet的组织和基本构件 465 15.3 applet架构 465 15.4 完整的applet框架 465 15.5 applet的初始化与终止 467 15.6 请求重绘 467 15.7 使用状态窗口 472 15.8 向applet传递形参 473 15.9 Applet类 474 15.10 事件处理 476 15.11 委派事件模型 476 15.12 事件 476 15.12.1 事件源 476 15.12.2 事件侦听器 477 15.12.3 事件类 477 15.12.4 事件侦听器接口 478 15.13 使用委派事件模型 479 15.13.1 处理鼠标事件和鼠标移动事件 479 15.13.2 一个简单的鼠标事件applet 480 15.14 其他Java关键字 482 15.14.1 transient和volatile修饰符 483 15.14.2 instanceof 483 15.14.3 strictfp 483 15.14.4 assert 483 15.14.5 native方法 484 第16章 Swing介绍 487 16.1 Swing的起源和设计原则 488 16.2 组件和容器 490 16.2.1 组件 490 16.2.2 容器 491 16.2.3 顶级容器窗格 491 16.3 布局管理器 491 16.4 第一个简单的Swing程序 492 16.5 使用JButton 497 16.6 使用JTextField 500 16.7 使用JCheckBox 504 16.8 使用JList 507 15.9 使用匿名内部类或lambda表达式来处理事件 515 16.10 创建Swing applet 517 第17章 JavaFX简介 521 17.1 JavaFX的基本概念 522 17.1.1 JavaFX包 522 17.1.2 Stage和Scene类 523 17.1.3 节点和场景图 523 17.1.4 布局 523 17.1.5 Application类和生命周期方法 523 17.1.6 启动JavaFX应用程序 524 17.2 JavaFX应用程序的骨架 524 17.3 编译和运行JavaFX程序 527 17.4 应用程序线程 527 17.5 使用简单的JavaFX控件Label 528 17.6 使用按钮和事件 530 17.6.1 事件基础 530 17.6.2 按钮控件简介 531 17.6.3 演示事件处理和按钮 531 17.7 其他3个JavaFX控件 534 17.7.1 CheckBox 534 17.7.2 ListView 538 17.7.3 TextField 543 17.8 效果和变换简介 546 17.8.1 效果 546 17.8.2 变换 548 17.8.3 演示效果和变换 549 17.9 进一步学习 552 附录A 自测题答案 555 附录B 使用Java的文档注释 599