目 录 第1章 概述 1 1.1 什么是Java语言 1 1.1.1 Java语言的特点 1 1.1.2 Java的三层架构 3 1.1.3 Java语言的目标 4 1.1.4 Java虚拟机 4 1.1.5 垃圾收集 5 1.1.6 代码安全 5 1.2 一个基本的Java应用程序 8 1.2.1 开发环境的安装 8 1.2.2 Java应用程序 11 1.3 程序的编译和运行 13 1.3.1 编译 13 1.3.2 运行 14 1.4 常见错误 14 1.4.1 编译时错误 14 1.4.2 运行时错误 15 1.5 使用Java核心API文档 17 习题 19 第2章 标识符和数据类型 20 2.1 Java的基本语法单位 20 2.1.1 空白、注释及语句 20 2.1.2 关键字 22 2.1.3 标识符 22 2.2 Java编码体例 23 2.3 Java的基本数据类型 24 2.3.1 基本数据类型 24 2.3.2 类型转换 27 2.3.3 变量、说明和赋值 27 2.4 复合数据类型 29 2.4.1 概述 29 2.4.2 复合数据类型 29 2.5 类和对象的初步介绍 30 2.5.1 Java中的面向对象技术 30 2.5.2 Java中的类定义 32 2.5.3 Java中与OOP有关的关键字 33 2.5.4 类定义示例 35 2.5.5 创建一个对象 38 2.5.6 引用变量的赋值 40 2.5.7 默认初始化和null引用值 41 2.5.8 术语概述 41 习题 42 第3章 表达式和流程控制语句 44 3.1 表达式 44 3.1.1 操作数 44 3.1.2 运算符 48 3.1.3 表达式的提升和转换 52 3.1.4 数学函数 52 3.2 流控制 53 3.2.1 表达式语句 53 3.2.2 块 54 3.2.3 分支语句 54 3.2.4 循环语句 59 3.2.5 break语句与continue语句 62 3.2.6 注释语句 64 3.3 简单的输入输出 64 习题 67 第4章 数组、向量和字符串 70 4.1 数组 70 4.1.1 数组说明 70 4.1.2 创建数组 71 4.1.3 数组边界 74 4.1.4 数组元素的引用 74 4.1.5 多维数组 75 4.1.6 数组复制 80 4.2 Vector类 81 4.2.1 概述 81 4.2.2 Vector类的构造方法 82 4.2.3 Vector类对象的操作 82 4.2.4 Vector类中的其他方法 84 4.2.5 Vector类的使用举例 84 4.3 字符串类型 86 4.3.1 字符串简述 86 4.3.2 字符串说明及初始化 86 4.3.3 字符串处理 87 4.3.4 几个特殊处理 88 习题 90 第5章 进一步讨论对象和类 93 5.1 抽象数据类型 93 5.1.1 概述 93 5.1.2 定义方法 94 5.1.3 按值传送 97 5.1.4 方法重载 98 5.2 对象的构造和初始化 99 5.2.1 显式成员初始化 100 5.2.2 构造方法 100 5.2.3 默认的构造方法 101 5.2.4 构造方法重载 102 5.2.5 finalize()方法 103 5.2.6 this引用 103 5.3 子类 104 5.3.1 is-a关系 105 5.3.2 extends关键字 105 5.3.3 单重继承 106 5.3.4 转换对象 108 5.3.5 方法自变量和异类集合 110 5.4 方法重写 111 5.4.1 方法重写示例 111 5.4.2 应用重写的规则 115 5.4.3 调用父类构造方法 116 5.5 多态 117 5.6 Java包 118 5.6.1 Java包的概念 119 5.6.2 import语句 119 5.6.3 目录层次关系及CLASSPATH环境变量 121 5.6.4 访问权限与数据隐藏 122 5.6.5 封装 123 5.7 类成员 124 5.7.1 类变量 124 5.7.2 类方法 126 5.8 final关键字 128 5.8.1 终极类 128 5.8.2 终极方法 129 5.8.3 终极变量 130 5.9 抽象类 131 5.10 接口 133 5.10.1 接口的定义 133 5.10.2 接口的实现 134 5.11 内部类 137 5.11.1 内部类的概念 137 5.11.2 匿名类 139 5.11.3 内部类的工作方式 140 5.12 包装类 141 习题 142 第6章 Java语言中的异常 145 6.1 异常 145 6.1.1 引出异常 145 6.1.2 异常的概念 147 6.1.3 异常分类 148 6.2 异常处理 149 6.2.1 try-catch块 150 6.2.2 再讨论前面的示例 152 6.2.3 公共异常 153 6.3 抛出异常 154 6.4 创建自己的异常 155 习题 157 第7章 Java语言的高级特性 158 7.1 泛型 158 7.1.1 泛型数据类型 158 7.1.2 接口中的泛型 158 7.1.3 泛型类 159 7.1.4 泛型方法 161 7.2 迭代器 162 7.2.1 迭代器的基本概念 162 7.2.2 Iterator接口 162 7.2.3 Iterable接口 164 7.2.4 使用迭代器示例 164 7.2.5 Iterable和for-each循环 167 7.3 克隆 168 习题 176 第8章 Java的图形用户界面设计 178 8.1 AWT与Swing 178 8.2 容器 179 8.2.1 顶层容器 179 8.2.2 使用JFrame创建应用程序 180 8.2.3 内容窗格 181 8.2.4 面板 182 8.3 布局 183 8.3.1 一个简单的示例 183 8.3.2 FlowLayout布局管理器 185 8.3.3 BorderLayout布局管理器 186 8.3.4 GridLayout布局管理器 188 8.3.5 CardLayout布局管理器 190 8.3.6 BoxLayout布局管理器 192 8.3.7 其他布局管理器 197 8.4 事件处理 198 8.4.1 事件处理模型 198 8.4.2 事件的种类 200 8.4.3 一个较复杂的示例 202 8.4.4 多监听程序 204 8.4.5 事件适配器 205 习题 206 第9章 Swing组件 208 9.1 按钮 208 9.1.1 普通按钮 208 9.1.2 切换按钮、复选框及单选按钮 212 9.2 标签 218 9.3 组合框 221 9.4 列表 223 9.5 文本组件 229 9.5.1 文本域 229 9.5.2 文本区 234 9.6 菜单组件 236 9.6.1 菜单栏 237 9.6.2 菜单 237 9.6.3 菜单项 238 9.6.4 复选菜单项和单选菜单项 239 9.6.5 弹出式菜单 242 9.7 对话框、标准对话框与文件对话框 245 9.7.1 对话框 245 9.7.2 标准对话框 246 9.7.3 文件对话框 250 9.8 控制组件外观 253 9.8.1 颜色 253 9.8.2 字体 254 9.8.3 绘图 256 习题 260 第10章 Java Applet 261 10.1 编写Applet 263 10.2 Applet的方法和Applet的生命周期 265 10.3 Applet的运行 266 10.3.1 用于显示Applet的方法 266 10.3.2 appletviewer 268 10.3.3 HTML与<applet>标记 268 10.3.4 Applet参数的读取 270 10.3.5 Applet与URL 271 10.4 Applet中的多媒体处理 272 10.4.1 在Applet中显示图像 272 10.4.2 在Applet中播放声音 273 10.5 Applet的事件处理 275 10.6 Applet与普通应用程序的结合 276 习题 278 第11章 Java数据流 279 11.1 数据流的基本概念 279 11.1.1 输入数据流 280 11.1.2 输出数据流 281 11.2 基本字节数据流类 282 11.2.1 文件数据流 282 11.2.2 过滤流 284 11.2.3 管道数据流 285 11.2.4 对象流 287 11.2.5 可持久化 288 11.3 基本字符流 291 11.3.1 读者和写者 291 11.3.2 缓冲区读者和缓冲区写者 292 11.4 文件的处理 296 11.4.1 File类 296 11.4.2 随机访问文件 299 习题 299 第12章 线程 301 12.1 线程和多线程 301 12.1.1 线程的概念 301 12.1.2 线程的结构 302 12.2 线程的状态 303 12.3 线程的创建 304 12.3.1 创建线程的方法一——继承Thread类 305 12.3.2 创建线程的方法二——实现Runnable接口 307 12.3.3 关于两种创建线程方法的讨论 309 12.4 线程的启动 310 12.5 线程的调度 310 12.6 线程的基本控制 312 12.6.1 结束线程 312 12.6.2 检查线程 312 12.6.3 挂起线程 312 12.7 同步问题 313 12.7.1 线程间的通信 313 12.7.2 线程间的资源互斥共享 315 12.7.3 对象的锁定标志 317 12.7.4 同步方法 318 12.8 死锁 319 12.9 线程交互——wait()和notify() 321 12.9.1 问题的提出 321 12.9.2 解决方法 322 12.9.3 守护线程 323 12.9.4 综合应用 324 习题 329 第13章 Java的网络功能 330 13.1 概述 330 13.2 使用InetAddress 332 13.3 统一资源定位器 333 13.3.1 URL的概念 333 13.3.2 URL的构造方法 334 13.3.3 与URL相关的异常 335 13.3.4 获取URL对象属性 335 13.3.5 读入URL数据 336 13.4 Socket接口 339 13.4.1 Socket的基本概念 340 13.4.2 Socket通信的基本步骤 341 13.4.3 Socket通信的程序设计 342 13.5 Java编程综合实例 344 习题 351 参考文献 352 ·X· ·III·