出版者的话
专家指导委员会
前言
第1章 起步
1.1 关于 Java技术
1.1.1 Java编程语言
1.1.2 Java平台
1.1.3 Java技术可以做什么
1.2 Java技术将如何改变我们的生活
1.3 第一步(Win32)
1.3.1 检查表
1.3.2 创建第一个应用程序
1.3.3 创建第一个 applet
1.3.4 错误解释(Win32)
1.4 第一步(UNIX/Linux)
1.4.1 检查表
1.4.2 创建第一个应用程序
1.4.3 创建第一个 apglt
1.4.4 错误解释(UNIX/Linux)
1.5 第一步(MacOS)
1.5.1 检查表
1.5.2 创建第一个应用程序
1.5.3 创建第一个applot
1.5.4 错误解释(MacOS)
1.6 分析 Hello World
1.6.1 对应用程序的解释
1.6.2 对applet的剖析
1.7 问题与练习
1.7.1 问题
1.7.2 练习
1.7.3 解答
1.8 代码样例
第2章 面向对象的编程概念
2.1 什么是对象
2.2 什么是消息
2.3 什么是类
2.4 什么是继承
2.5 什么是接口
2.6 如何将这些概念运用到代码中
2.6.1 ClickMe的源代码和 applet标记
2.6.2 ClickMe applet中的对象
2.6.3 ClickMe applet中的类
2.6.4 ClickMe applet中的消息
2.6.5 ClickMe applet中的继承
2.6.6 ClickMe applae中的接口
2.6.7 API文档
2.7 小结
2.8 问题与练习
2.8.1 问题
2.8.2 练习
2.8.3 解答
2.9 代码样例
第3章 语言基础
3.1 变量
3.1.1 数据类型
3.1.2 变量名称
3.1.3 作用范围
3.1.4 变量初始化
3.1.5 final变量
3.1.6 变量的小结
3.1.7 问题与练习:变量
3.2 操作符
3.2.1 算术操作符
3.2.2 关系和条件操作符
3.2.3 移动和位操作符
3.2.4 赋值操作符
3.2.5 其他操作符
3.2.6 操作符的小结
3.2.7 问题与练习:操作符
3.3 表达式、语句和代码块
3.3.1 表达式
3.3.2 语句
3.3.3 代码块
3.3.4 表达式、语句和代码块的小结
3.3.5 问题与练习:表达式、语句和代码块
3.4 流程控制语句
3.4.1 while和do-while语句
3.4.2 for语句
3.4.3 if-else语句
3.4.4 switch语句
3.4.5 异常处理语句
3.4.6 分支语句
3.4.7 流程控制语句的小结
3.4.8 问题与练习:流程控制语句
3.5 代码样例
第4章 对象基础和简单数据对象
4.1 对象的生存周期
4.1.1 创建对象
4.1.2 使用对象
4.1.3 清除不被使用的对象
4.1.4 对象小结
4.1.5 问题与练习:对象
4.2 字符和字符串
4.2.1 字符
4.2.2 字符串和字符串缓冲区
4.2.3 创建字符串和字符串缓冲区
4.2.4 得到字符串或字符串缓冲区的长度
4.2.5 通过索引从字符串或字符串缓冲区得到字符
4.2.6 在字符串中搜索字符或子字符串
4.2.7 比较字符串和部分字符串
4.2.8 操作字符串
4.2.9 修改字符串缓冲区
4.2.10 字符串和编译器
4.2.11 字符和字符串小结
4.2.12 问题与练习:字符和字符串
4.3 数字
4.3.1 数字类
4.3.2 将字符串转换为数字
4.3.3 将数字转换为字符串
4.3.4 对数字进行格式化
4.3.5 用定制的格式对数字进行格式化
4.3.6 高级算术功能
4.3.7 数字小结
4.3.8 问题与练习:数字
4.4 数组
4.4.1 创建和使用数组
4.4.2 对象数组
4.4.3 数组的数组
4.4.4 复制数组
4.4.5 数组小结
4.4.6 问题与练习:数组
4.5 代码样例
第5章 类和继承
5.1 创建类
5.1.1 声明类
5.1.2 声明成员变量
5.1.3 定义方法
5.1.4 为类提供构造器
5.1.5 将信息传递给方法或构造器
5.1.6 从方法返回值
5.1.7 使用this关键字
5.1.8 控制对类成员的访问
5.1.9 理解实例和类成员
5.1.10 实例和类成员的初始化
5.1.11 创建类的小结
5.1.12 问题与练习:创建类
5.2 管理继承
5.2.1 覆盖和隐藏方法
5.2.2 隐藏成员变量
5.2.3 使用Super
5.2.4 使用Object的后代
5.2.5 编写final类和方法
5.2.6 编写抽象类和方法
5.2.7 管理继承的小结
5.2.8 问题与练习:管理继承
5.3 实现嵌套的类
5.3.1 内部类
5.3.2 关于嵌套类的其他问题
5.3.3 嵌套类的小结
5.3.4 问题与练习:嵌套类
5.4 代码样例
第6章 接口和包
6.1 编写和使用接口
6.1.1 定义接口
6.1.2 实现接口
6.1.3 将接口作为类型使用
6.1.4 接口不能改变
6.1.5 接口小结
6.1.6 问题与练习:接口
6.2 创建和使用包
6.2.1 创建包
6.2.2 命名包
6.2.3 使用包成员
6.2.4 管理源代码文件和类文件
6.2.5 创建和使用包的小结
6.2.6 问题与练习:创建和使用包
6.3 代码样例
第7章 使用异常处理错误
7.1 什么是异常
7.2 捕获或指定要求
7.3 捕获和处理异常
7.3.1 try块
7.3.2 catch块
7.3.3 finally块
7.3.4 结合
7.4 指定方法抛出的异常
7.5 如何抛出异常
7.5.1 throw语句
7.5.2 Throwable类及其子类
7.5.3 创建自己的异常类
7.6 运行时异常--争论
7.7 异常的优点
7.7.1 优点1:将错误处理代码与“常规”代码分离
7.7.2 优点2:将错误沿调用堆栈向上传递
7.7.3 优点3:对错误类型进行分组和区分
7.8 异常的小结
7.9 问题与练习
7.9.1 问题
7.9.2 练习
7.9.3 解答
7.10 代码样例
第8章 线程:同时执行多个任务
8.1 什么是线程
8.2 使用Timer和TimerTask类
8.2.1 停止计时器线程
8.2.2 重复执行任务
8.2.3 关于Timer的更多信息
8.3 定制线程的run方法
8.3.1 对Thread类进行于类化和覆盖run
8.3.2 实现Runnable接口
8.3.3 决定使用Runhable接口
8.4 线程的生存周期
8.4.1 创建线程
8.4.2 启动线程
8.4.3 使线程不可运行
8.4.4 停止线程
8.4.5 isAnve方法
8.5 理解线程优先级
8.5.1 400000微米线程赛跑
8.5.2 自私的线程
8.5.3 时间片
8.5.4 线程优先级的小结
8.6 线程的同步
8.6.1 生产者/消耗者例子
8.6.2 锁定对象
8.6.3 使用notifyAll和 wait方法
8.6.4 运行生产者/消耗者例子
8.6.5 避免饿死和死锁
8.7 线程的分组
8.7.1 线程组
8.7.2 在组中显式地创建线程
8.7.3 得到线程的组
8.7.4 使用ThreadGroup类
8.8 线程的小结
8.8.1 线程的包支持
8.8.2 线程的语言支持
8.8.3 线程的运行时支持
8.9 问题与练习
8.10 代码样例
第9章 I/O读和写
9.1 I/O流概述
9.1.1 字符流
9.1.2 字节流
9.1.3 理解I/O超类
9.2 使用流
9.2.1 如何使用文件流
9.2.2 如何使用管道流
9.2.3 如何封装流
9.2.4 如何联结文件
9.2.5 操作过滤器流
9.3 对象的串行化
9.3.1 对对象进行串行化
9.3.2 为类提供对象串行化
9.4 操作随机访问文件
9.4.1 使用随机访问文件
9.4.2 为随机访问文件编写过滤器
9.5 其他问题
9.6 读和写的小结
9.7 问题与练习
9.7.1 问题
9.7.2 练习
9.7.3 解答
9.8 代码样例
第10章 Swing用户界面
10.1 SwingAPI概述
10.2 示例1:Hello World Swing
10.3 示例2:SwingApplication
10.3.1 外观
10.3.2 建立按钮和标签
10.3.3 处理事件
10.3.4 在组件周围添加边框
10.4 示例3:CelsiusConverter
10.4.1 添加HTML
10.4.2 添加图标
10.5 示例4:LunarPhases
10.5.1 复合边框
10.5.2 组合框
10.5.3 多个图像
10.6 示例5:VoteDialog
10.6.1 单选按钮
10.6.2 对话框
10.7 布局管理
10.8 线程和Swing
10.8.1 单线程规则
10.8.2 如何在事件调度线程中执行代码
10.9 Swing组件的可视索引
10.10 小结
10.11 问题与练习
10.11.1 问题
10.11.2 练习
10.11.3 解答
10.12 代码样例
附录A 常见问题及其解决方案
附录B 用于Internet的applet
附录C 集合
附录D 被废弃的线程方法
附录E 参考信息