简介
Java不但是最为流行的计算机语言,而且是优秀的纯面向对象语言。本
书针对初学者和自学者的特点,以通俗易懂的语言介绍Java语言,力求做到
深入浅出,将复杂的概念用简洁浅显的语言娓娓道来。
全书内容分为5篇,共计27章,涵盖了Java程序设计语言基础、Java面
向对象基础、Java图形化界面编程技术、Java网络应用程序开发技术、Java
数据库应用程序开发技术等方面的内容。为了便于读者学习和实际应用,本
书最后一篇通过对几个完整项目案例的分析,详细讲解了使用Java语言开发
游戏程序、网络程序和数据库应用程序的完整过程,有利于初学者锻炼使用
Java语言解决实际问题的能力。
本书提供有大量翔实的编程实例和丰富的项目案例,通过对项目的实现
和讲解,以提高读者解决实际问题的能力,使读者逐步具备利用Java语言来
开发应用程序的能力,特别适合于想学习Java语言的初学者和大中专院校学
生阅读,也可作为有一定Java基础的软件开发人员和其他有关人员的参考资
料。
目录
第1篇 java语言基础篇
第1章 java语言概述 30
本章介绍了java语言的背景、特点、开发环境、开发过程及开发工具的使用。在学习本章内容时,要重点理解java技术的两个含义:java程序设计语言与java平台。重点掌握如何搭建java程序的开发环境,包括下载及安装java开发工具包jdk、配置环境变量及jdk环境测试等。
1.1 java语言简介 30
1.1.1 java语言的起源 30
1.1.2 使用java语言的优点 31
1.2 java语言与java平台 32
1.2.1 java程序设计语言 32
1.2.2 java平台 32
1.3 搭建java程序开发环境 33
1.3.1 系统要求 33
1.3.2 下载java程序开发工具包jdk 34
1.3.3 安装jdk 35
1.3.4 在windows系统下配置jdk 36
1.4 开发第一个java应用程序 37
1.4.1 创建第一个java应用程序源文件 37
1.4.2 将helloworldapp.java源文件编译为.class文件 38
1.4.3 运行helloworldapp应用程序 39
1.4.4 java应用程序的基本结构 40
1.5 小结 41
.第2章 java语言基本语法 42
本章深入学习了java语言的基本语法,重点对常量与变量及数据类型和运算符做了详细的讲述。在本章的学习过程中,可能对java数据类型的转换难以理解,因此读者一定要多做练习,通过上机练习体会和掌握java的基本语法。
2.1 标识符和关键字 42
2.1.1 标识符 42
2.1.2 关键字 42
2.1.3 标识符命名规则 43
2.2 常量与变量 43
2.2.1 常量的概念及常量声明 43
2.2.2 变量的概念及变量声明 44
2.3 基本数据类型 45
2.3.1 数据类型 45
2.3.2 整数类型 45
2.3.3 浮点类型 47
2.3.4 字符类型 47
2.3.5 逻辑类型 49
2.3.6 不同数据类型间的转换 49
2.4 运算符与表达式 51
2.4.1 算术运算符与算术表达式 51
2.4.2 赋值运算符与赋值表达式 52
2.4.3 自增和自减运算符 53
2.4.4 关系运算符和关系表达式 54
2.4.5 逻辑运算符和逻辑表达式 54
2.4.6 位运算符 57
2.4.7 三元运算符 59
2.4.8 运算符的优先级 60
2.5 小结 60
第3章 数组 61
本章深入学习了java语言的数组,了解了java语言中数组的概念,学习了如何声明、创建、访问和修改数组。本章重点是一维数组和二维数组。其中对于数组的创建及二维数组的创建和使用是本章学习的难点,建议读者多上机练习。
3.1 数组的概念与特点 61
3.1.1 什么是数组 61
3.1.2 java语言中数组的特点 62
3.2 一维数组 62
3.2.1 声明一维数组变量 62
3.2.2 创建一维数组对象 63
3.2.3 访问一维数组元素 63
3.2.4 修改一维数组元素 64
3.3 多维数组 65
3.3.1 声明二维数组变量 65
3.3.2 创建二维数组对象 66
3.3.3 访问二维数组元素 67
3.3.4 修改二维数组元素 67
3.4 小结 68
第4章 程序流程控制语句 69
本章深入介绍了有关程序流程控制的语句,主要包括选择语句、循环语句和跳转语句。其中的while循环语句因其灵活方便,读者应重点掌握。本章最后讲到的跳转语句主要用于提高循环语句的灵活性,特别是标签break语句,是本章掌握的难点。
4.1 选择语句 69
4.1.1 if选择语句 69
4.1.2 if-else双分支选择语句 70
4.1.3 if-else-if多分支选择语句 71
4.1.4 选择语句的嵌套 74
4.1.5 switch多分支开关语句 76
4.1.6 if选择语句与switch开关语句的区别 78
4.2 循环语句 78
4.2.1 while循环语句 78
4.2.2 do-while循环语句 80
4.2.3 for循环语句 83
4.2.4 循环语句的嵌套 85
4.2.5 使用增强型for语句遍历一维数组中的元素 87
4.2.6 对一维数组进行排序 88
4.2.7 使用增强型for语句遍历二维数组中的元素 89
4.3 跳转语句 90
4.3.1 break跳转语句 90
4.3.2 continue跳转语句 93
4.4 实例 94
4.4.1 实例1:译密码 95
4.4.2 实例2:打印九九乘法表 96
4.5 小结 97
第5章 数字、字符和字符串处理 98
本章深入介绍了java语言中有关数字、字符和字符串的处理的相关知识,重点讲解了java.lang包中用来处理数字的number及其子类、专门用来处理数学运算的math类、专门用来处理字符的character类,以及专门用来创建和操作字符串的类string。
5.1 数字 98
5.1.1 numbers数字包装器类 98
5.1.2 数字的格式化输出 100
5.1.3 math数学运算处理类 104
5.2 字符 107
5.2.1 character字符包装器类 107
5.2.2 转义字符序列 108
5.3 使用string类 109
5.3.1 创建字符串对象 109
5.3.2 获取字符串的长度 110
5.3.3 连接字符串 110
5.3.4 字符串与字符数组 112
5.3.5 在一个字符串中操纵字符 113
5.3.6 字符串比较和字符串部分内容比较 117
5.4 使用stringbuilder类 120
5.4.1 认识stringbuilder类 120
5.4.2 stringbuilder对象的长度和容量 121
5.4.3 stringbuilder类提供的操作方法 121
5.5 实例 123
5.5.1 实例1:用户登录验证程序 123
5.5.2 实例2:敏感词过滤程序 125
5.6 小结 126
第2篇 java面向对象篇
第6章 类和对象 128
本章主要学习了类和对象的相关概念,包括类的声明、类的实例(即对象)。本章所讲的知识是java面向对象语言中最基本的概念,所涉及的类和声明、对象的构造、访问控制修饰符都是读者学习的重点。其中的构造器的工作过程、访问控制和this关键字的使用是本章学习的难点。
6.1 面向对象简介 128
6.1.1 什么是对象 128
6.1.2 什么是类 130
6.1.3 什么是继承 131
6.1.4 什么是接口 131
6.1.5 什么是包 132
6.2 定义类 132
6.2.1 类的基本结构 132
6.2.2 声明类的成员变量 134
6.2.3 声明类的成员方法 135
6.2.4 成员方法命名 136
6.2.5 方法重载 137
6.2.6 调用成员方法 137
6.2.7 为类提供构造器 139
6.3 向方法或构造器内传递信息 140
6.3.1 使用参数 140
6.3.2 实参与形参的关系 141
6.3.3 参数类型 143
6.3.4 传递任意数量的参数 143
6.3.5 参数名称 144
6.3.6 传递原始数据类型参数 144
6.3.7 传递引用数据类型参数 145
6.4 对象 145
6.4.1 对象实例 145
6.4.2 创建对象 147
6.4.3 使用对象 150
6.5 方法的返回值 152
6.5.1 返回值 152
6.5.2 返回类或接口 153
6.6 使用this关键字 153
6.6.1 对字段使用this 154
6.6.2 对构造器使用this 154
6.7 控制对类的成员的访问 155
6.8 理解实例成员和类成员 156
6.8.1 类变量 156
6.8.2 类方法 158
6.8.3 常量 158
6.8.4 实例:autocar类 158
6.9 初始化字段 159
6.9.1 静态初始化块 159
6.9.2 初始化实例成员 160
6.10 枚举类型 161
6.11 标注 164
6.11.1 标注的用法 164
6.11.2 文档标注 164
6.11.3 预定义标注 165
6.11.4 标注处理 168
6.12 小结 168
第7章 继承 169
本章主要学习了类的继承。这是面向对象语言的三大特征之一。本章学习的重点是继承中方法的覆盖和方法的重写、super关键字的使用及构造器链。读者在学习本章内容时对super关键字的使用及构造器链的调用要细心体会,这是本意学习的难点。
7.1 继承概述 169
7.1.1 继承的概念 169
7.1.2 java平台中的类层次 169
7.1.3 一个继承的示例 170
7.1.4 在子类中可以做的事情 171
7.2 从子类中访问父类的私有成员 172
7.3 对象类型转换 173
7.3.1 隐式对象类型转换 173
7.3.2 强制对象类型转换 174
7.3.3 使用instanceof运算符 174
7.4 覆盖和隐藏超类中的方法 174
7.4.1 覆盖超类中的实例方法 175
7.4.2 协变覆盖 175
7.4.3 隐藏超类中的类方法 176
7.4.4 方法覆盖和方法隐藏后的修饰符 178
7.4.5 方法覆盖和方法隐藏总结 178
7.5 隐藏超类中的字段 179
7.6 使用super关键字访问超类中的成员 180
7.6.1 调用超类中被覆盖的方法 180
7.6.2 访问超类中被隐藏的字段 180
7.7 使用super关键字调用超类的构造器 181
7.7.1 调用超类的无参构造器 181
7.7.2 调用超类的带参构造器 183
7.7.3 构造器链 184
7.8 object类 185
7.8.1 作为超类的object类 185
7.8.2 object类的对象克隆方法clone() 186
7.8.3 object类的对象比较方法equals() 186
7.8.4 object类的对象清除方法finalize() 187
7.8.5 object类的获取对象类信息的方法getclass() 187
7.8.6 object类的获得对象内存地址的方法hashcode() 188
7.8.7 object类的对象字符串表示方法tostring() 188
7.9 编写final类和final方法 188
7.9.1 使用final关键字声明final方法 188
7.9.2 使用final关键字声明final类 189
7.10 小结 189
第8章 接口 190
本章主要介绍了接口的概念、接口的声明及接口的实现。在学习本章内容时,读者重点理解接口的概念和学习如何实现接口。在将接口作为类型使用上,读者可能会感到难以理解,需用心体会。
8.1 理解接口 190
8.1.1 一般接口的概念 190
8.1.2 java中的接口 191
8.1.3 在java中定义接口 191
8.1.4 在java中使用接口 191
8.1.5 作为api的接口 192
8.1.6 接口和多继承 192
8.2 定义接口 193
8.2.1 接口声明 193
8.2.2 接口体 193
8.3 实现接口 194
8.3.1 实现接口的语法 194
8.3.2 接口实例:relatable 195
8.3.3 实现接口relatable 195
8.3.4 编译并运行带有接口的实例 196
8.3.5 实现多个接口时的常量和方法冲突问题 197
8.4 将接口作为类型使用 198
8.5 改写接口 199
8.6 小结 200
第9章 抽象类与嵌套类 201
本章介绍了两种特殊的类型:抽象类和嵌套类。抽象类是实现多态的一种途径,嵌套类主要应用在事件监听器的构建上。其中抽象类和接口的异同是读者学习的一个重点和难点。嵌套类的定义也是学习中容易迷惑的地方。建议读者在学习到这部分内容时,如果暂时不能理解的话,不妨先放一放。等学过后面的事件监听机制以后,再回来学习这部分内容,相信就容易理解了。
9.1 抽象类和抽象方法 201
9.1.1 抽象方法 201
9.1.2 抽象类 201
9.1.3 抽象类与接口对比 202
9.1.4 抽象类实例 202
9.1.5 抽象类实现接口 203
9.1.6 抽象类的类成员 204
9.2 嵌套类 204
9.2.1 为什么要使用嵌套类 205
9.2.2 静态嵌套类 205
9.2.3 内部类 205
9.2.4 内部类实例 206
9.2.5 局部内部类和匿名内部类 207
9.2.6 内部类的修饰符 207
9.3 小结 207
第10章 泛型 208
本章主要描述了什么是泛型、为什么要使用泛型及如何使用泛型。读者在学习本章时,重点理解什么是泛型及为什么要使用泛型。读者可能在学习本章的过程中对如何使用泛型还存在迷惑,没有关系,完全可以先不去理会它。在具体使用泛型最多的地方一般是在java的集合框架部分,所以读者可以在学习java集合框架部分内容时,再回来结合本章的内容来掌握泛型的使用。
10.1 泛型简介 208
10.1.1 为什么要使用泛型 208
10.1.2 一个简单的box类 208
10.2 泛型类型 210
10.2.1 box类的泛型版本 210
10.2.2 类型参数命名惯例 212
10.3 泛型方法和泛型构造器 212
10.4 限定的类型参数 213
10.5 泛型子类型 214
10.6 使用通配符 215
10.7 类型擦除 216
10.8 小结 217
第11章 包 218
本章主要介绍了java语言中包的概念及如何创建和使用包。包是java组织资源的一种方式,读者学习起来应该不会感到吃力。只是如何将包对应到具体的物理路径上,读者应该细心体会。因为java平台的许多实现依赖于分组的文件系统来管理源文件和class文件的,包名往往对应着系统中实际的目录名,这一点读者一定要注意。
11.1 使用包 218
11.2 创建包 219
11.2.1 创建包的语句 219
11.2.2 命名包 220
11.2.3 包命名惯例 220
11.3 使用包中的成员 221
11.3.1 通过全限定名引用包成员 221
11.3.2 导入包中的成员 221
11.3.3 导入整个包 222
11.3.4 包的层级 222
11.3.5 包成员名称冲突 223
11.3.6 静态导入语句 223
11.4 管理源文件和class类文件 224
11.4.1 管理实现策略 224
11.4.2 设置classpath系统变量 225
11.5 小结 225
第12章 集合 226
本章主要学习了java集合框架,包括接口、实现和算法。其中核心集合接口是java集合框架的基础。实现是用于存储集合的数据对象,是实现了集合接口的类。
12.1 java集合框架概述 226
12.1.1 java集合框架 226
12.1.2 使用java集合框架的益处 227
12.2 核心集合接口 227
12.3 collection接口 229
12.3.1 转换构造器 229
12.3.2 collection接口的定义 229
12.3.3 collection接口的基本操作 230
12.3.4 遍历collection接口 230
12.3.5 collection接口的批量操作 231
12.3.6 collection接口的数组操作 231
12.4 set接口 232
12.4.1 set接口的定义 232
12.4.2 set接口的基本操作 233
12.4.3 set接口的批量操作 234
12.4.4 set接口的数组操作 235
12.5 list接口 235
12.5.1 list接口的定义 235
12.5.2 list接口与vector的比较 236
12.5.3 从collection继承的操作 236
12.5.4 按位置访问和查找操作 237
12.5.5 list迭代器 238
12.5.6 子集合操作 240
12.6 queue接口 242
12.6.1 queue接口的定义 242
12.6.2 queue接口的操作 242
12.6.3 queue接口应用 243
12.7 map接口 243
12.7.1 map接口的定义 243
12.7.2 map接口的基本操作 244
12.7.3 map接口的批量操作 245
12.7.4 集合视图 245
12.8 sortedset接口 246
12.8.1 sortedset接口的定义 246
12.8.2 sortedset接口的操作 247
12.8.3 sortedset接口的标准构造器 247
12.8.4 子集合操作 247
12.8.5 端点操作 248
12.9 sortedmap接口 248
12.9.1 sortedmap接口的定义 249
12.9.2 sortedmap接口的操作 249
12.9.3 sortedmap接口的标准构造器 249
12.9.4 与sortedset接口的比较 249
12.10 实现 250
12.10.1 实现的类型 250
12.10.2 set接口的实现 251
12.10.3 list接口的实现 252
12.10.4 map接口的实现 252
12.10.5 queue接口的实现 253
12.11 算法 253
12.11.1 collections类 254
12.11.2 排序 254
12.11.3 乱序 254
12.11.4 常规数据处理 255
12.11.5 查找 255
12.11.6 组成 255
12.11.7 查找极值 255
12.12 小结 256
第3篇 java图形图像篇
第13章 创建一个图形界面应用程序 258
本章学习如何使用swing工具包创建带图形界面的java应用程序。在学习本章时,重点理解顶层窗口的概念,特别是内容面板。因为java应用程序中要求其他组件都要位于内容面板之上。在学习窗体及窗体事件响应时可能会有些理解上的困难,不用担心,只要了解其工作原理即可,在实际开发中,集成开发工具会给程序员完成很多基础性的工作的。
13.1 java swing简介 258
13.1.1 什么是swing 258
13.1.2 swing特性 259
13.2 创建一个简单的图形界面程序 260
13.2.1 helloworldswing.java界面程序示例 260
13.2.2 编译并运行helloworldswing程序 261
13.3 使用swing顶层容器 262
13.3.1 swing中的顶层容器类 262
13.3.2 顶层容器和容器层级 264
13.3.3 向内容面板中添加组件 264
13.3.4 给窗体添加一个菜单栏 265
13.3.5 根面板 265
13.4 使用jframe类创建图形界面程序窗体 265
13.4.1 创建并显示一个窗体 265
13.4.2 创建窗体的一般步骤 266
13.4.3 指定窗口装饰 267
13.4.4 响应窗口关闭事件 269
13.4.5 窗体api 270
13.5 小结 271
第14章 使用swing基本组件 272
本章主要介绍jcomponent类和swing的基本组件。jcomponent类是所有swing中非顶层组件的直接或间接超类,它定义了公共的api,所以了解jcomponent类有助于掌握其他swing组件的使用。
14.1 认识jcomponent类 272
14.1.1 jcomponent特性 272
14.1.2 jcomponent api 273
14.2 基本控件 276
14.2.1 按钮组件jbutton 276
14.2.2 复选框组件jcheckbox 280
14.2.3 单选按钮组件jradiobutton 281
14.2.4 文本框组件jtextfield 282
14.2.5 密码框组件jpasswordfield 284
14.2.6 组合框组件jcombobox 286
14.2.7 滑块组件jslider 288
14.2.8 微调控制组件jspinner 290
14.2.9 菜单组件jmenu 292
14.2.10 列表框组件jlist 297
14.3 不可编辑的信息显示控件 300
14.3.1 标签组件jlabel 300
14.3.2 进度条组件jprogressbar 302
14.3.3 分隔线组件jseparator 303
14.3.4 工具提示组件jtooltip 305
14.4 小结 305
第15章 使用swing高级组件 306
本章主要讲解swing的高级组件,包括交互式显示高度格式化信息控件,如颜色选择器jcolorchooser、文件选择器jfilechooser、表组件jtable和树组件jtree等。另外,还介绍了非顶层容器控件及特殊用途窗口控件。最后两节介绍了如何在swing组件中使用html以格式化文本,以及swing提供的各种简单而实用的对话框。
15.1 交互式显示高度格式化信息控件 306
15.1.1 颜色选择器jcolorchooser 306
15.1.2 文件选择器jfilechooser 307
15.1.3 文本编辑组件jeditorpane和jtextpane 309
15.1.4 文本区组件jtextarea 311
15.1.5 表组件jtable 312
15.1.6 树组件jtree 315
15.2 非顶层容器控件 318
15.2.1 面板组件jpanel 318
15.2.2 滚动面板jscrollpane 320
15.2.3 拆分面板jsplitpane 321
15.2.4 选项卡面板jtabbedpane 323
15.2.5 工具栏jtoolbar 326
15.3 特殊用途窗口控件 328
15.3.1 内部窗体组件jinternalframe 328
15.3.2 层面板jlayeredpane 330
15.3.3 根面板jrootpane 332
15.4 在swing组件中使用html 334
15.5 顶层容器对话框jdialog 336
15.5.1 对话框简介 336
15.5.2 使用joptionpane类创建简单对话框 336
15.6 小结 339
第16章 程序界面布局 340
本章主要介绍了swing中的程序界面布局方式,包括borderlayout、boxlayout、cardlayout、flowlayout、gridbaglayout、gridlayout、grouplayout和springlayout。
16.1 标准布局管理器简介 340
16.1.1 borderlayout边框布局 340
16.1.2 boxlayout布局 341
16.1.3 cardlayout卡片布局 341
16.1.4 flowlayout流动布局 341
16.1.5 gridbaglayout网格包布局 341
16.1.6 gridlayout网格布局 341
16.1.7 grouplayout布局 342
16.1.8 springlayout布局 342
16.2 在程序中使用布局管理器 342
16.2.1 设置布局管理器 342
16.2.2 向容器中添加组件 342
16.2.3 提供组件大小和排列策略 343
16.2.4 设置组件之间的间隙 343
16.2.5 设置容器的语言方向 343
16.2.6 选择布局管理器 344
16.3 使用各种布局管理器 344
16.3.1 使用borderlayout 345
16.3.2 使用boxlayout 347
16.3.3 使用cardlayout 348
16.3.4 使用flowlayout 349
16.3.5 使用gridlayout 350
16.3.6 使用gridbaglayout 352
16.4 实例:设计用户登录界面 358
16.4.1 设计界面布局 358
16.4.2 代码实现 358
16.5 小结 362
第17章 事件处理 363
本章介绍了程序事件处理原理和java中的事件处理机制,并且概括了java中的各种事件类型。在学习本章内容时,重点掌握各种事件类型的处理方法。在了解java的事件处理机制时,可能会有一定的难度。
17.1 事件处理原理 363
17.2 java事件处理模型 363
17.3 java事件与监听器的类型 364
17.3.1 java事件类型 365
17.3.2 java监听器类型 366
17.3.3 java适配器类 366
17.4 处理动作事件 367
17.4.1 编写动作事件处理程序的步骤 367
17.4.2 处理动作事件的过程 367
17.4.3 处理按钮触发的动作事件 368
17.4.4 处理选择菜单时触发的事件 370
17.4.5 处理文本框触发的事件 373
17.5 处理选项事件 375
17.5.1 编写选项事件处理程序的步骤 375
17.5.2 处理选项事件的过程 375
17.5.3 处理选择项状态改变所触发的事件 376
17.6 处理列表选择事件 378
17.6.1 编写列表事件处理程序的步骤 378
17.6.2 处理列表选择事件的过程 379
17.6.3 处理选择列表项时所触发的事件 379
17.7 处理焦点事件 381
17.7.1 编写焦点事件处理程序的步骤 381
17.7.2 处理焦点事件的过程 382
17.7.3 处理组件获得或失去焦点时所触发的事件 382
17.8 处理键盘事件 384
17.8.1 编写键盘事件处理程序的步骤 384
17.8.2 处理键盘事件的过程 384
17.8.3 处理键盘击键时所触发的事件 385
17.9 处理鼠标事件 387
17.9.1 编写鼠标事件处理程序的步骤 387
17.9.2 处理鼠标事件的过程 387
17.9.3 处理鼠标操作所触发的事件 388
17.10 处理鼠标移动事件 390
17.10.1 编写鼠标移动事件处理程序的步骤 390
17.10.2 处理鼠标移动事件的过程 390
17.10.3 处理鼠标移动时所触发的事件 391
17.11 实例:一个简单的用户登录验证程序 393
17.11.1 程序功能 393
17.11.2 为程序实现动作事件监听器 394
17.11.3 为按钮注册监听器 394
17.11.4 实现actionlistener接口中的actionperformed方法 395
17.11.5 编译并运行程序 396
17.12 小结 396
第18章 图形、文本和图像处理 397
本章介绍了java中对图形、文本和图像的处理,主要是使用java 2d api。在本章中,对图像的处理就是读者学习的重点,因为在实际开发中,相对图形和文本的处理,可能使用java的机会并不是很多。其中文本的处理较为复杂,是读者学习的难点。建议读者能理解本章的内容即可。
18.1 java2d概述 397
18.1.1 java2d坐标空间 397
18.1.2 java2d渲染模型 398
18.2 java2d绘图入门 398
18.2.1 创建一个绘图面板 398
18.2.2 获取graphics2d对象 399
18.2.3 简单实例:绘制字符串 399
18.3 绘制几何图形 400
18.3.1 基本几何对象 400
18.3.2 使用point2d 401
18.3.3 画直线 401
18.3.4 画直角矩形 402
18.3.5 画圆角矩形 402
18.3.6 画椭圆形 403
18.3.7 画弧形 404
18.3.8 画二次曲线 405
18.3.9 画三次曲线 405
18.3.10 画任意图形 406
18.3.11 设置画笔样式 407
18.3.12 设置填充模式 409
18.3.13 实例:绘制和填充几何图形 410
18.4 绘制文本 413
18.4.1 选择字体 413
18.4.2 获得本地系统已安装的字体 414
18.4.3 创建一个新的字体 415
18.4.4 获取某个字体的信息 416
18.5 绘制图像 416
18.5.1 读取/加载图像 416
18.5.2 绘制图像 417
18.5.3 创建并绘制图像 418
18.5.4 写入/保存图像 418
18.5.5 获取可读写的图像类型 419
18.5.6 实例:读写jpg图像 419
18.6 小结 421
第4篇 java开发技术篇
第19章 异常处理 424
本章主要向读者介绍了java中的异常处理机制。异常处理机制是保证java程序正常运行、具有较高安全性的重要手段。对于开发良好的编程习惯是非常重要的。读者在学习本章内容时,把重点放在对java程序中的异常处理上。而在学习到自定义异常时,读者可能会感觉到有些困难。建议将自定义异常作为了解内容即可。
19.1 java异常 424
19.1.1 java程序的编译错误 424
19.1.2 java程序的运行错误 425
19.1.3 java程序中的逻辑错误 426
19.1.4 java程序的异常处理机制 427
19.1.5 java语言中的异常处理类 427
19.2 处理java程序中的异常 428
19.2.1 使用try-catch语句保护代码和捕获异常 428
19.2.2 使用多个catch子句 428
19.2.3 使用finally子句 429
19.2.4 可嵌入的try块 430
19.3 抛出异常 431
19.3.1 使用throws声明可能会抛出异常的方法 431
19.3.2 使用throw抛出异常 432
19.3.3 异常类常用方法 433
19.4 自定义异常 433
19.4.1 创建自定义异常类 433
19.4.2 使用throw和try-catch语句处理自定义异常 434
19.5 小结 435
第20章 输入与输出 436
本章主要介绍了java中的数据流,包括输入流和输出流。流的处理是java中很重要的一项技术。读者在学习本章内容时,重点掌握对字节流的处理和对字符流的处理。java中流的体系比较复杂,可能会对读者的理解带来困难。建议读者在学习时重点放在字节流、字符流和缓冲流的处理上,其他的部分作为了解内容即可。
20.1 文件类(file类)的使用 436
20.2 流的概念 438
20.2.1 流的定义 438
20.2.2 输入流与输出流 438
20.2.3 字节流与字符流 439
20.3 字节流 439
20.3.1 inputstream类与outputstream类 439
20.3.2 文件输入流fileinputstream类与文件输出流fileoutputstream类 440
20.3.3 缓存输入流bufferedinputstream类与缓存输出流buffered outputstream类 442
20.4 字符流 443
20.4.1 reader类和writer类 443
20.4.2 字符文件读写器filereader类和filewriter类 444
20.4.3 带缓存的字符文件读写器bufferedreader类和bufferedwriter类 445
20.4.4 打印流printstream类和printwriter类 447
20.5 实现用户输入 448
20.5.1 使用system.in获取用户输入 448
20.5.2 使用scanner类获取用户输入 449
20.5.3 使用命令行参数 449
20.6 小结 450
第21章 并发程序设计 451
本章介绍了java线程的一些基本知识和简单应用,并进一步讲解了并发程序中几个重要的概念:同步、死锁及高级并发对象。本章的内容对于初学者来说有一定的难度,特别是同步、死锁、不可改变对象及高级并发对象等。建议读者把学习的重点放在线程的理解及两种线程的实现方法上。
21.1 进程和线程 451
21.1.1 进程 451
21.1.2 线程 452
21.2 线程对象 452
21.2.1 定义并启动一个线程 452
21.2.2 使用sleep暂停线程执行 453
21.2.3 中断线程 454
21.2.4 join方法 455
21.2.5 实例:simplethreadsdemo.java 456
21.3 同步 459
21.3.1 线程冲突 459
21.3.2 内存一致性错误 460
21.3.3 同步方法 460
21.3.4 固定锁和同步 461
21.3.5 原子访问 462
21.4 活跃性 463
21.4.1 死锁 463
21.4.2 饥饿和活锁 464
21.5 守护块 464
21.6 不可变对象 467
21.6.1 同步类实例 468
21.6.2 定义不可变对象的策略 469
21.7 高级并发对象 470
21.7.1 锁对象 471
21.7.2 执行器 473
21.7.3 并发集合 474
21.7.4 原子变量 476
21.8 实例:模拟银行系统进行存取款处理 477
21.9 小结 479
第22章 网络编程 480
在本章中,学习了如何使用java的java.net包所提供的类来进行socket网络编程。重点讲了基于tcp协议的可靠的和面向连接的网络通信,以及基于udp协议的不可靠的和无连接的网络通信。这是本章学习的重点。其中应用多线程处理多客户端的访问是本章学习的难点,读者应结合上一章线程部分的内容来理解这部分内容。
22.1 网络编程基础 480
22.1.1 tcp协议 480
22.1.2 ip协议 480
22.1.3 udp协议 480
22.1.4 端口 481
22.1.5 套接字 481
22.1.6 java.net包 481
22.2 使用inetaddress类封装ip地址 481
22.2.1 inetaddress类 482
22.2.2 实例:获取本地主机和internet公共域名的名称和ip地址 482
22.3 基于url的网络编程 483
22.3.1 url类 484
22.3.2 直接读取url内容 486
22.3.3 urlconnection类 487
22.4 基于tcp的网络编程 488
22.4.1 socket通信模型 488
22.4.2 服务器端程序设计 489
22.4.3 客户端程序设计 491
22.4.4 多客户端同时访问服务器端程序 493
22.5 基于udp的网络编程 494
22.5.1 udp通信模型 494
22.5.2 接收数据报程序设计 495
22.5.3 发送数据报程序设计 496
22.5.4 运行udp网络程序 498
22.6 小结 498
第23章 java数据库应用程序开发基础 499
在本章中,介绍了java的jdbc技术,以及如何使用java.sql包中的相关类编写数据库应用程序,最后还介绍了事务管理。其中应用java.sql包中的类编写数据库应用程序应是读者本章学习的重点。而在数据库程序中处理事务是本章学习的难点,读者应结合本书所提供的示例上机调试运行,以帮助理解相关的概念。
23.1 jdbc技术概述 499
23.1.1 jdbc技术介绍 499
23.1.2 jdbc的4种驱动程序 500
23.1.3 如何获得jdbc驱动程序 501
23.1.4 设置环境变量使得驱动程序可被访问 501
23.2 java.sql包 501
23.3 访问数据库 504
23.3.1 创建access odbc数据源 504
23.3.2 创建数据库连接 506
23.3.3 对数据库进行查询 507
23.3.4 增加、修改、删除数据库中数据 508
23.3.5 使用preparedstatement访问数据库 509
23.4 事务 509
23.5 小结 511
第24章 使用swing组件创建数据库应用程序 512
在本章中,通过若干实例学习了如何使用swing组件jcombobox、jlist和jtable创建数据库应用程序。读者在学习本章内容时,重点掌握jcombobox组件、jlist组件和jtable组件显示数据的方式。而这些组件所采用的mvc模式可能是读者学习的一个难点。建议读者将本章的示例上机调试和运行,细心体会mvc开发的模式。
24.1 使用jcombobox组件创建数据库应用程序 512
24.1.1 创建一个jcombobox 512
24.1.2 利用defaultcomboboxmodel创建jcombobox 515
24.2 使用jlist组件创建数据库应用程序 516
24.2.1 利用defaultlistmodel创建jlist 516
24.2.2 利用listmodel与abstractlistmodel创建jlist 518
24.3 使用jtable组件创建数据库应用程序 519
24.3.1 与jtable相关的类 520
24.3.2 利用defaulttablemodel创建jtable 521
24.4 小结 522
第5篇 java实战篇
第25章 案例1:拼图游戏 524
在本章中,通过一个完整的拼图游戏的开发过程,介绍了创建java应用程序的步骤和方法。重点对游戏的算法设计和代码实现做了详细的说明。在本例中,综合运用到了java的swing编程、继承类、集合和泛型的使用、事件处理等知识点,让读者真正达到独立开发的能力和综合运用多种知识的能力。
25.1 软件简介 524
25.1.1 应用背景 524
25.1.2 功能介绍 524
25.2 素材准备 525
25.3 算法设计 525
25.3.1 加载和拆分图片 525
25.3.2 实现图片的随机排列 526
25.3.3 实现图片的移动 526
25.3.4 参考图像的缩放 527
25.4 开发步骤 528
25.4.1 自定义按钮类设计:imagebutton类 528
25.4.2 游戏界面布局:构造窗体类puzzlegame 528
25.4.3 加载和拆分图像 529
25.4.4 创建拼接图面板 530
25.4.5 创建显示参考图像的面板 531
25.4.6 创建菜单栏 533
25.4.7 实现按钮事件监听器类 534
25.4.8 设置窗体在屏幕中出现的位置 535
25.4.9 编写main方法 535
25.4.10 运行测试 536
25.5 打包部署 536
25.6 小结 536
第26章 案例2:心心网络聊天室 537
在本章中,通过一个完整的网络聊天室的开发过程,介绍了创建java网络应用程序的步骤和方法。重点对程序的设计和功能模块划分及代码实现做了详细的说明。在本例中,综合运用到了java的socket编程技术、多线程处理等知识点,其中的多线程实现双向通信是本章学习的难点,读者可参考书中提供的示例源代码,实际上机调试并运行,以帮助理解。
26.1 软件简介 537
26.1.1 应用背景 537
26.1.2 需求分析 537
26.2 设计思路与原理 539
26.2.1 服务端 539
26.2.2 客户端 540
26.2.3 建立用户界面 540
26.3 业务流程图 541
26.4 应用程序实现 541
26.4.1 建立服务器:chatserver类 542
26.4.2 通信处理:chathandler类 543
26.4.3 建立客户端:chatclient类 545
26.4.4 消息封装:message类 548
26.5 软件部署 549
26.5.1 服务器端程序打包与部署 550
26.5.2 客户端程序打包与部署 550
26.5.3 运行测试 551
26.6 小结 551
第27章 案例3:惠文教育教务管理系统 552
数据库应用程序的开发,是java程序员最经常接触到的项目类型之一。数据库开发技术,同样也是java语言中最重要的技术之一。本案例通过一个真实的惠文教育教务管理系统,着重向读者介绍了从项目背景、需求分析、总体设计和概要设计、数据库设计与实现、功能代码实现到应用程序部署和运行测试的完整的开发过程,比较详细地向读者展示了java数据库应用程序的开发技术。
27.1 背景与主要技术介绍 552
27.1.1 应用背景 552
27.1.2 安装和配置mysql数据库 552
27.1.3 配置mysql数据库的jdbc驱动程序 557
27.2 总体设计与概要说明 558
27.2.1 功能模块划分 558
27.2.2 功能模块说明 559
27.3 业务流程图 559
27.3.1 登录模块流程 559
27.3.2 班主任管理模块流程 560
27.3.3 教务专员管理模块 560
27.3.4 人事专员管理模块 560
27.4 数据库设计 560
27.4.1 数据库需求分析 561
27.4.2 数据库概念结构设计 561
27.4.3 数据库逻辑结构设计 563
27.4.4 数据库结构的实现 565
27.5 应用程序实现 567
27.5.1 创建应用程序对象 567
27.5.2 实现登录模块 569
27.5.3 实现菜单栏 578
27.5.4 实现修改密码模块 580
27.5.5 实现“关于”对话框 587
27.5.6 实现人事管理模块 589
27.5.7 实现departmentinfobean、teacherinfobean信息封装类 605
27.5.8 实现departmentaction、teacheraction业务处理类 607
27.6 软件部署 613
27.7 项目总结 616
第1章 java语言概述 30
本章介绍了java语言的背景、特点、开发环境、开发过程及开发工具的使用。在学习本章内容时,要重点理解java技术的两个含义:java程序设计语言与java平台。重点掌握如何搭建java程序的开发环境,包括下载及安装java开发工具包jdk、配置环境变量及jdk环境测试等。
1.1 java语言简介 30
1.1.1 java语言的起源 30
1.1.2 使用java语言的优点 31
1.2 java语言与java平台 32
1.2.1 java程序设计语言 32
1.2.2 java平台 32
1.3 搭建java程序开发环境 33
1.3.1 系统要求 33
1.3.2 下载java程序开发工具包jdk 34
1.3.3 安装jdk 35
1.3.4 在windows系统下配置jdk 36
1.4 开发第一个java应用程序 37
1.4.1 创建第一个java应用程序源文件 37
1.4.2 将helloworldapp.java源文件编译为.class文件 38
1.4.3 运行helloworldapp应用程序 39
1.4.4 java应用程序的基本结构 40
1.5 小结 41
.第2章 java语言基本语法 42
本章深入学习了java语言的基本语法,重点对常量与变量及数据类型和运算符做了详细的讲述。在本章的学习过程中,可能对java数据类型的转换难以理解,因此读者一定要多做练习,通过上机练习体会和掌握java的基本语法。
2.1 标识符和关键字 42
2.1.1 标识符 42
2.1.2 关键字 42
2.1.3 标识符命名规则 43
2.2 常量与变量 43
2.2.1 常量的概念及常量声明 43
2.2.2 变量的概念及变量声明 44
2.3 基本数据类型 45
2.3.1 数据类型 45
2.3.2 整数类型 45
2.3.3 浮点类型 47
2.3.4 字符类型 47
2.3.5 逻辑类型 49
2.3.6 不同数据类型间的转换 49
2.4 运算符与表达式 51
2.4.1 算术运算符与算术表达式 51
2.4.2 赋值运算符与赋值表达式 52
2.4.3 自增和自减运算符 53
2.4.4 关系运算符和关系表达式 54
2.4.5 逻辑运算符和逻辑表达式 54
2.4.6 位运算符 57
2.4.7 三元运算符 59
2.4.8 运算符的优先级 60
2.5 小结 60
第3章 数组 61
本章深入学习了java语言的数组,了解了java语言中数组的概念,学习了如何声明、创建、访问和修改数组。本章重点是一维数组和二维数组。其中对于数组的创建及二维数组的创建和使用是本章学习的难点,建议读者多上机练习。
3.1 数组的概念与特点 61
3.1.1 什么是数组 61
3.1.2 java语言中数组的特点 62
3.2 一维数组 62
3.2.1 声明一维数组变量 62
3.2.2 创建一维数组对象 63
3.2.3 访问一维数组元素 63
3.2.4 修改一维数组元素 64
3.3 多维数组 65
3.3.1 声明二维数组变量 65
3.3.2 创建二维数组对象 66
3.3.3 访问二维数组元素 67
3.3.4 修改二维数组元素 67
3.4 小结 68
第4章 程序流程控制语句 69
本章深入介绍了有关程序流程控制的语句,主要包括选择语句、循环语句和跳转语句。其中的while循环语句因其灵活方便,读者应重点掌握。本章最后讲到的跳转语句主要用于提高循环语句的灵活性,特别是标签break语句,是本章掌握的难点。
4.1 选择语句 69
4.1.1 if选择语句 69
4.1.2 if-else双分支选择语句 70
4.1.3 if-else-if多分支选择语句 71
4.1.4 选择语句的嵌套 74
4.1.5 switch多分支开关语句 76
4.1.6 if选择语句与switch开关语句的区别 78
4.2 循环语句 78
4.2.1 while循环语句 78
4.2.2 do-while循环语句 80
4.2.3 for循环语句 83
4.2.4 循环语句的嵌套 85
4.2.5 使用增强型for语句遍历一维数组中的元素 87
4.2.6 对一维数组进行排序 88
4.2.7 使用增强型for语句遍历二维数组中的元素 89
4.3 跳转语句 90
4.3.1 break跳转语句 90
4.3.2 continue跳转语句 93
4.4 实例 94
4.4.1 实例1:译密码 95
4.4.2 实例2:打印九九乘法表 96
4.5 小结 97
第5章 数字、字符和字符串处理 98
本章深入介绍了java语言中有关数字、字符和字符串的处理的相关知识,重点讲解了java.lang包中用来处理数字的number及其子类、专门用来处理数学运算的math类、专门用来处理字符的character类,以及专门用来创建和操作字符串的类string。
5.1 数字 98
5.1.1 numbers数字包装器类 98
5.1.2 数字的格式化输出 100
5.1.3 math数学运算处理类 104
5.2 字符 107
5.2.1 character字符包装器类 107
5.2.2 转义字符序列 108
5.3 使用string类 109
5.3.1 创建字符串对象 109
5.3.2 获取字符串的长度 110
5.3.3 连接字符串 110
5.3.4 字符串与字符数组 112
5.3.5 在一个字符串中操纵字符 113
5.3.6 字符串比较和字符串部分内容比较 117
5.4 使用stringbuilder类 120
5.4.1 认识stringbuilder类 120
5.4.2 stringbuilder对象的长度和容量 121
5.4.3 stringbuilder类提供的操作方法 121
5.5 实例 123
5.5.1 实例1:用户登录验证程序 123
5.5.2 实例2:敏感词过滤程序 125
5.6 小结 126
第2篇 java面向对象篇
第6章 类和对象 128
本章主要学习了类和对象的相关概念,包括类的声明、类的实例(即对象)。本章所讲的知识是java面向对象语言中最基本的概念,所涉及的类和声明、对象的构造、访问控制修饰符都是读者学习的重点。其中的构造器的工作过程、访问控制和this关键字的使用是本章学习的难点。
6.1 面向对象简介 128
6.1.1 什么是对象 128
6.1.2 什么是类 130
6.1.3 什么是继承 131
6.1.4 什么是接口 131
6.1.5 什么是包 132
6.2 定义类 132
6.2.1 类的基本结构 132
6.2.2 声明类的成员变量 134
6.2.3 声明类的成员方法 135
6.2.4 成员方法命名 136
6.2.5 方法重载 137
6.2.6 调用成员方法 137
6.2.7 为类提供构造器 139
6.3 向方法或构造器内传递信息 140
6.3.1 使用参数 140
6.3.2 实参与形参的关系 141
6.3.3 参数类型 143
6.3.4 传递任意数量的参数 143
6.3.5 参数名称 144
6.3.6 传递原始数据类型参数 144
6.3.7 传递引用数据类型参数 145
6.4 对象 145
6.4.1 对象实例 145
6.4.2 创建对象 147
6.4.3 使用对象 150
6.5 方法的返回值 152
6.5.1 返回值 152
6.5.2 返回类或接口 153
6.6 使用this关键字 153
6.6.1 对字段使用this 154
6.6.2 对构造器使用this 154
6.7 控制对类的成员的访问 155
6.8 理解实例成员和类成员 156
6.8.1 类变量 156
6.8.2 类方法 158
6.8.3 常量 158
6.8.4 实例:autocar类 158
6.9 初始化字段 159
6.9.1 静态初始化块 159
6.9.2 初始化实例成员 160
6.10 枚举类型 161
6.11 标注 164
6.11.1 标注的用法 164
6.11.2 文档标注 164
6.11.3 预定义标注 165
6.11.4 标注处理 168
6.12 小结 168
第7章 继承 169
本章主要学习了类的继承。这是面向对象语言的三大特征之一。本章学习的重点是继承中方法的覆盖和方法的重写、super关键字的使用及构造器链。读者在学习本章内容时对super关键字的使用及构造器链的调用要细心体会,这是本意学习的难点。
7.1 继承概述 169
7.1.1 继承的概念 169
7.1.2 java平台中的类层次 169
7.1.3 一个继承的示例 170
7.1.4 在子类中可以做的事情 171
7.2 从子类中访问父类的私有成员 172
7.3 对象类型转换 173
7.3.1 隐式对象类型转换 173
7.3.2 强制对象类型转换 174
7.3.3 使用instanceof运算符 174
7.4 覆盖和隐藏超类中的方法 174
7.4.1 覆盖超类中的实例方法 175
7.4.2 协变覆盖 175
7.4.3 隐藏超类中的类方法 176
7.4.4 方法覆盖和方法隐藏后的修饰符 178
7.4.5 方法覆盖和方法隐藏总结 178
7.5 隐藏超类中的字段 179
7.6 使用super关键字访问超类中的成员 180
7.6.1 调用超类中被覆盖的方法 180
7.6.2 访问超类中被隐藏的字段 180
7.7 使用super关键字调用超类的构造器 181
7.7.1 调用超类的无参构造器 181
7.7.2 调用超类的带参构造器 183
7.7.3 构造器链 184
7.8 object类 185
7.8.1 作为超类的object类 185
7.8.2 object类的对象克隆方法clone() 186
7.8.3 object类的对象比较方法equals() 186
7.8.4 object类的对象清除方法finalize() 187
7.8.5 object类的获取对象类信息的方法getclass() 187
7.8.6 object类的获得对象内存地址的方法hashcode() 188
7.8.7 object类的对象字符串表示方法tostring() 188
7.9 编写final类和final方法 188
7.9.1 使用final关键字声明final方法 188
7.9.2 使用final关键字声明final类 189
7.10 小结 189
第8章 接口 190
本章主要介绍了接口的概念、接口的声明及接口的实现。在学习本章内容时,读者重点理解接口的概念和学习如何实现接口。在将接口作为类型使用上,读者可能会感到难以理解,需用心体会。
8.1 理解接口 190
8.1.1 一般接口的概念 190
8.1.2 java中的接口 191
8.1.3 在java中定义接口 191
8.1.4 在java中使用接口 191
8.1.5 作为api的接口 192
8.1.6 接口和多继承 192
8.2 定义接口 193
8.2.1 接口声明 193
8.2.2 接口体 193
8.3 实现接口 194
8.3.1 实现接口的语法 194
8.3.2 接口实例:relatable 195
8.3.3 实现接口relatable 195
8.3.4 编译并运行带有接口的实例 196
8.3.5 实现多个接口时的常量和方法冲突问题 197
8.4 将接口作为类型使用 198
8.5 改写接口 199
8.6 小结 200
第9章 抽象类与嵌套类 201
本章介绍了两种特殊的类型:抽象类和嵌套类。抽象类是实现多态的一种途径,嵌套类主要应用在事件监听器的构建上。其中抽象类和接口的异同是读者学习的一个重点和难点。嵌套类的定义也是学习中容易迷惑的地方。建议读者在学习到这部分内容时,如果暂时不能理解的话,不妨先放一放。等学过后面的事件监听机制以后,再回来学习这部分内容,相信就容易理解了。
9.1 抽象类和抽象方法 201
9.1.1 抽象方法 201
9.1.2 抽象类 201
9.1.3 抽象类与接口对比 202
9.1.4 抽象类实例 202
9.1.5 抽象类实现接口 203
9.1.6 抽象类的类成员 204
9.2 嵌套类 204
9.2.1 为什么要使用嵌套类 205
9.2.2 静态嵌套类 205
9.2.3 内部类 205
9.2.4 内部类实例 206
9.2.5 局部内部类和匿名内部类 207
9.2.6 内部类的修饰符 207
9.3 小结 207
第10章 泛型 208
本章主要描述了什么是泛型、为什么要使用泛型及如何使用泛型。读者在学习本章时,重点理解什么是泛型及为什么要使用泛型。读者可能在学习本章的过程中对如何使用泛型还存在迷惑,没有关系,完全可以先不去理会它。在具体使用泛型最多的地方一般是在java的集合框架部分,所以读者可以在学习java集合框架部分内容时,再回来结合本章的内容来掌握泛型的使用。
10.1 泛型简介 208
10.1.1 为什么要使用泛型 208
10.1.2 一个简单的box类 208
10.2 泛型类型 210
10.2.1 box类的泛型版本 210
10.2.2 类型参数命名惯例 212
10.3 泛型方法和泛型构造器 212
10.4 限定的类型参数 213
10.5 泛型子类型 214
10.6 使用通配符 215
10.7 类型擦除 216
10.8 小结 217
第11章 包 218
本章主要介绍了java语言中包的概念及如何创建和使用包。包是java组织资源的一种方式,读者学习起来应该不会感到吃力。只是如何将包对应到具体的物理路径上,读者应该细心体会。因为java平台的许多实现依赖于分组的文件系统来管理源文件和class文件的,包名往往对应着系统中实际的目录名,这一点读者一定要注意。
11.1 使用包 218
11.2 创建包 219
11.2.1 创建包的语句 219
11.2.2 命名包 220
11.2.3 包命名惯例 220
11.3 使用包中的成员 221
11.3.1 通过全限定名引用包成员 221
11.3.2 导入包中的成员 221
11.3.3 导入整个包 222
11.3.4 包的层级 222
11.3.5 包成员名称冲突 223
11.3.6 静态导入语句 223
11.4 管理源文件和class类文件 224
11.4.1 管理实现策略 224
11.4.2 设置classpath系统变量 225
11.5 小结 225
第12章 集合 226
本章主要学习了java集合框架,包括接口、实现和算法。其中核心集合接口是java集合框架的基础。实现是用于存储集合的数据对象,是实现了集合接口的类。
12.1 java集合框架概述 226
12.1.1 java集合框架 226
12.1.2 使用java集合框架的益处 227
12.2 核心集合接口 227
12.3 collection接口 229
12.3.1 转换构造器 229
12.3.2 collection接口的定义 229
12.3.3 collection接口的基本操作 230
12.3.4 遍历collection接口 230
12.3.5 collection接口的批量操作 231
12.3.6 collection接口的数组操作 231
12.4 set接口 232
12.4.1 set接口的定义 232
12.4.2 set接口的基本操作 233
12.4.3 set接口的批量操作 234
12.4.4 set接口的数组操作 235
12.5 list接口 235
12.5.1 list接口的定义 235
12.5.2 list接口与vector的比较 236
12.5.3 从collection继承的操作 236
12.5.4 按位置访问和查找操作 237
12.5.5 list迭代器 238
12.5.6 子集合操作 240
12.6 queue接口 242
12.6.1 queue接口的定义 242
12.6.2 queue接口的操作 242
12.6.3 queue接口应用 243
12.7 map接口 243
12.7.1 map接口的定义 243
12.7.2 map接口的基本操作 244
12.7.3 map接口的批量操作 245
12.7.4 集合视图 245
12.8 sortedset接口 246
12.8.1 sortedset接口的定义 246
12.8.2 sortedset接口的操作 247
12.8.3 sortedset接口的标准构造器 247
12.8.4 子集合操作 247
12.8.5 端点操作 248
12.9 sortedmap接口 248
12.9.1 sortedmap接口的定义 249
12.9.2 sortedmap接口的操作 249
12.9.3 sortedmap接口的标准构造器 249
12.9.4 与sortedset接口的比较 249
12.10 实现 250
12.10.1 实现的类型 250
12.10.2 set接口的实现 251
12.10.3 list接口的实现 252
12.10.4 map接口的实现 252
12.10.5 queue接口的实现 253
12.11 算法 253
12.11.1 collections类 254
12.11.2 排序 254
12.11.3 乱序 254
12.11.4 常规数据处理 255
12.11.5 查找 255
12.11.6 组成 255
12.11.7 查找极值 255
12.12 小结 256
第3篇 java图形图像篇
第13章 创建一个图形界面应用程序 258
本章学习如何使用swing工具包创建带图形界面的java应用程序。在学习本章时,重点理解顶层窗口的概念,特别是内容面板。因为java应用程序中要求其他组件都要位于内容面板之上。在学习窗体及窗体事件响应时可能会有些理解上的困难,不用担心,只要了解其工作原理即可,在实际开发中,集成开发工具会给程序员完成很多基础性的工作的。
13.1 java swing简介 258
13.1.1 什么是swing 258
13.1.2 swing特性 259
13.2 创建一个简单的图形界面程序 260
13.2.1 helloworldswing.java界面程序示例 260
13.2.2 编译并运行helloworldswing程序 261
13.3 使用swing顶层容器 262
13.3.1 swing中的顶层容器类 262
13.3.2 顶层容器和容器层级 264
13.3.3 向内容面板中添加组件 264
13.3.4 给窗体添加一个菜单栏 265
13.3.5 根面板 265
13.4 使用jframe类创建图形界面程序窗体 265
13.4.1 创建并显示一个窗体 265
13.4.2 创建窗体的一般步骤 266
13.4.3 指定窗口装饰 267
13.4.4 响应窗口关闭事件 269
13.4.5 窗体api 270
13.5 小结 271
第14章 使用swing基本组件 272
本章主要介绍jcomponent类和swing的基本组件。jcomponent类是所有swing中非顶层组件的直接或间接超类,它定义了公共的api,所以了解jcomponent类有助于掌握其他swing组件的使用。
14.1 认识jcomponent类 272
14.1.1 jcomponent特性 272
14.1.2 jcomponent api 273
14.2 基本控件 276
14.2.1 按钮组件jbutton 276
14.2.2 复选框组件jcheckbox 280
14.2.3 单选按钮组件jradiobutton 281
14.2.4 文本框组件jtextfield 282
14.2.5 密码框组件jpasswordfield 284
14.2.6 组合框组件jcombobox 286
14.2.7 滑块组件jslider 288
14.2.8 微调控制组件jspinner 290
14.2.9 菜单组件jmenu 292
14.2.10 列表框组件jlist 297
14.3 不可编辑的信息显示控件 300
14.3.1 标签组件jlabel 300
14.3.2 进度条组件jprogressbar 302
14.3.3 分隔线组件jseparator 303
14.3.4 工具提示组件jtooltip 305
14.4 小结 305
第15章 使用swing高级组件 306
本章主要讲解swing的高级组件,包括交互式显示高度格式化信息控件,如颜色选择器jcolorchooser、文件选择器jfilechooser、表组件jtable和树组件jtree等。另外,还介绍了非顶层容器控件及特殊用途窗口控件。最后两节介绍了如何在swing组件中使用html以格式化文本,以及swing提供的各种简单而实用的对话框。
15.1 交互式显示高度格式化信息控件 306
15.1.1 颜色选择器jcolorchooser 306
15.1.2 文件选择器jfilechooser 307
15.1.3 文本编辑组件jeditorpane和jtextpane 309
15.1.4 文本区组件jtextarea 311
15.1.5 表组件jtable 312
15.1.6 树组件jtree 315
15.2 非顶层容器控件 318
15.2.1 面板组件jpanel 318
15.2.2 滚动面板jscrollpane 320
15.2.3 拆分面板jsplitpane 321
15.2.4 选项卡面板jtabbedpane 323
15.2.5 工具栏jtoolbar 326
15.3 特殊用途窗口控件 328
15.3.1 内部窗体组件jinternalframe 328
15.3.2 层面板jlayeredpane 330
15.3.3 根面板jrootpane 332
15.4 在swing组件中使用html 334
15.5 顶层容器对话框jdialog 336
15.5.1 对话框简介 336
15.5.2 使用joptionpane类创建简单对话框 336
15.6 小结 339
第16章 程序界面布局 340
本章主要介绍了swing中的程序界面布局方式,包括borderlayout、boxlayout、cardlayout、flowlayout、gridbaglayout、gridlayout、grouplayout和springlayout。
16.1 标准布局管理器简介 340
16.1.1 borderlayout边框布局 340
16.1.2 boxlayout布局 341
16.1.3 cardlayout卡片布局 341
16.1.4 flowlayout流动布局 341
16.1.5 gridbaglayout网格包布局 341
16.1.6 gridlayout网格布局 341
16.1.7 grouplayout布局 342
16.1.8 springlayout布局 342
16.2 在程序中使用布局管理器 342
16.2.1 设置布局管理器 342
16.2.2 向容器中添加组件 342
16.2.3 提供组件大小和排列策略 343
16.2.4 设置组件之间的间隙 343
16.2.5 设置容器的语言方向 343
16.2.6 选择布局管理器 344
16.3 使用各种布局管理器 344
16.3.1 使用borderlayout 345
16.3.2 使用boxlayout 347
16.3.3 使用cardlayout 348
16.3.4 使用flowlayout 349
16.3.5 使用gridlayout 350
16.3.6 使用gridbaglayout 352
16.4 实例:设计用户登录界面 358
16.4.1 设计界面布局 358
16.4.2 代码实现 358
16.5 小结 362
第17章 事件处理 363
本章介绍了程序事件处理原理和java中的事件处理机制,并且概括了java中的各种事件类型。在学习本章内容时,重点掌握各种事件类型的处理方法。在了解java的事件处理机制时,可能会有一定的难度。
17.1 事件处理原理 363
17.2 java事件处理模型 363
17.3 java事件与监听器的类型 364
17.3.1 java事件类型 365
17.3.2 java监听器类型 366
17.3.3 java适配器类 366
17.4 处理动作事件 367
17.4.1 编写动作事件处理程序的步骤 367
17.4.2 处理动作事件的过程 367
17.4.3 处理按钮触发的动作事件 368
17.4.4 处理选择菜单时触发的事件 370
17.4.5 处理文本框触发的事件 373
17.5 处理选项事件 375
17.5.1 编写选项事件处理程序的步骤 375
17.5.2 处理选项事件的过程 375
17.5.3 处理选择项状态改变所触发的事件 376
17.6 处理列表选择事件 378
17.6.1 编写列表事件处理程序的步骤 378
17.6.2 处理列表选择事件的过程 379
17.6.3 处理选择列表项时所触发的事件 379
17.7 处理焦点事件 381
17.7.1 编写焦点事件处理程序的步骤 381
17.7.2 处理焦点事件的过程 382
17.7.3 处理组件获得或失去焦点时所触发的事件 382
17.8 处理键盘事件 384
17.8.1 编写键盘事件处理程序的步骤 384
17.8.2 处理键盘事件的过程 384
17.8.3 处理键盘击键时所触发的事件 385
17.9 处理鼠标事件 387
17.9.1 编写鼠标事件处理程序的步骤 387
17.9.2 处理鼠标事件的过程 387
17.9.3 处理鼠标操作所触发的事件 388
17.10 处理鼠标移动事件 390
17.10.1 编写鼠标移动事件处理程序的步骤 390
17.10.2 处理鼠标移动事件的过程 390
17.10.3 处理鼠标移动时所触发的事件 391
17.11 实例:一个简单的用户登录验证程序 393
17.11.1 程序功能 393
17.11.2 为程序实现动作事件监听器 394
17.11.3 为按钮注册监听器 394
17.11.4 实现actionlistener接口中的actionperformed方法 395
17.11.5 编译并运行程序 396
17.12 小结 396
第18章 图形、文本和图像处理 397
本章介绍了java中对图形、文本和图像的处理,主要是使用java 2d api。在本章中,对图像的处理就是读者学习的重点,因为在实际开发中,相对图形和文本的处理,可能使用java的机会并不是很多。其中文本的处理较为复杂,是读者学习的难点。建议读者能理解本章的内容即可。
18.1 java2d概述 397
18.1.1 java2d坐标空间 397
18.1.2 java2d渲染模型 398
18.2 java2d绘图入门 398
18.2.1 创建一个绘图面板 398
18.2.2 获取graphics2d对象 399
18.2.3 简单实例:绘制字符串 399
18.3 绘制几何图形 400
18.3.1 基本几何对象 400
18.3.2 使用point2d 401
18.3.3 画直线 401
18.3.4 画直角矩形 402
18.3.5 画圆角矩形 402
18.3.6 画椭圆形 403
18.3.7 画弧形 404
18.3.8 画二次曲线 405
18.3.9 画三次曲线 405
18.3.10 画任意图形 406
18.3.11 设置画笔样式 407
18.3.12 设置填充模式 409
18.3.13 实例:绘制和填充几何图形 410
18.4 绘制文本 413
18.4.1 选择字体 413
18.4.2 获得本地系统已安装的字体 414
18.4.3 创建一个新的字体 415
18.4.4 获取某个字体的信息 416
18.5 绘制图像 416
18.5.1 读取/加载图像 416
18.5.2 绘制图像 417
18.5.3 创建并绘制图像 418
18.5.4 写入/保存图像 418
18.5.5 获取可读写的图像类型 419
18.5.6 实例:读写jpg图像 419
18.6 小结 421
第4篇 java开发技术篇
第19章 异常处理 424
本章主要向读者介绍了java中的异常处理机制。异常处理机制是保证java程序正常运行、具有较高安全性的重要手段。对于开发良好的编程习惯是非常重要的。读者在学习本章内容时,把重点放在对java程序中的异常处理上。而在学习到自定义异常时,读者可能会感觉到有些困难。建议将自定义异常作为了解内容即可。
19.1 java异常 424
19.1.1 java程序的编译错误 424
19.1.2 java程序的运行错误 425
19.1.3 java程序中的逻辑错误 426
19.1.4 java程序的异常处理机制 427
19.1.5 java语言中的异常处理类 427
19.2 处理java程序中的异常 428
19.2.1 使用try-catch语句保护代码和捕获异常 428
19.2.2 使用多个catch子句 428
19.2.3 使用finally子句 429
19.2.4 可嵌入的try块 430
19.3 抛出异常 431
19.3.1 使用throws声明可能会抛出异常的方法 431
19.3.2 使用throw抛出异常 432
19.3.3 异常类常用方法 433
19.4 自定义异常 433
19.4.1 创建自定义异常类 433
19.4.2 使用throw和try-catch语句处理自定义异常 434
19.5 小结 435
第20章 输入与输出 436
本章主要介绍了java中的数据流,包括输入流和输出流。流的处理是java中很重要的一项技术。读者在学习本章内容时,重点掌握对字节流的处理和对字符流的处理。java中流的体系比较复杂,可能会对读者的理解带来困难。建议读者在学习时重点放在字节流、字符流和缓冲流的处理上,其他的部分作为了解内容即可。
20.1 文件类(file类)的使用 436
20.2 流的概念 438
20.2.1 流的定义 438
20.2.2 输入流与输出流 438
20.2.3 字节流与字符流 439
20.3 字节流 439
20.3.1 inputstream类与outputstream类 439
20.3.2 文件输入流fileinputstream类与文件输出流fileoutputstream类 440
20.3.3 缓存输入流bufferedinputstream类与缓存输出流buffered outputstream类 442
20.4 字符流 443
20.4.1 reader类和writer类 443
20.4.2 字符文件读写器filereader类和filewriter类 444
20.4.3 带缓存的字符文件读写器bufferedreader类和bufferedwriter类 445
20.4.4 打印流printstream类和printwriter类 447
20.5 实现用户输入 448
20.5.1 使用system.in获取用户输入 448
20.5.2 使用scanner类获取用户输入 449
20.5.3 使用命令行参数 449
20.6 小结 450
第21章 并发程序设计 451
本章介绍了java线程的一些基本知识和简单应用,并进一步讲解了并发程序中几个重要的概念:同步、死锁及高级并发对象。本章的内容对于初学者来说有一定的难度,特别是同步、死锁、不可改变对象及高级并发对象等。建议读者把学习的重点放在线程的理解及两种线程的实现方法上。
21.1 进程和线程 451
21.1.1 进程 451
21.1.2 线程 452
21.2 线程对象 452
21.2.1 定义并启动一个线程 452
21.2.2 使用sleep暂停线程执行 453
21.2.3 中断线程 454
21.2.4 join方法 455
21.2.5 实例:simplethreadsdemo.java 456
21.3 同步 459
21.3.1 线程冲突 459
21.3.2 内存一致性错误 460
21.3.3 同步方法 460
21.3.4 固定锁和同步 461
21.3.5 原子访问 462
21.4 活跃性 463
21.4.1 死锁 463
21.4.2 饥饿和活锁 464
21.5 守护块 464
21.6 不可变对象 467
21.6.1 同步类实例 468
21.6.2 定义不可变对象的策略 469
21.7 高级并发对象 470
21.7.1 锁对象 471
21.7.2 执行器 473
21.7.3 并发集合 474
21.7.4 原子变量 476
21.8 实例:模拟银行系统进行存取款处理 477
21.9 小结 479
第22章 网络编程 480
在本章中,学习了如何使用java的java.net包所提供的类来进行socket网络编程。重点讲了基于tcp协议的可靠的和面向连接的网络通信,以及基于udp协议的不可靠的和无连接的网络通信。这是本章学习的重点。其中应用多线程处理多客户端的访问是本章学习的难点,读者应结合上一章线程部分的内容来理解这部分内容。
22.1 网络编程基础 480
22.1.1 tcp协议 480
22.1.2 ip协议 480
22.1.3 udp协议 480
22.1.4 端口 481
22.1.5 套接字 481
22.1.6 java.net包 481
22.2 使用inetaddress类封装ip地址 481
22.2.1 inetaddress类 482
22.2.2 实例:获取本地主机和internet公共域名的名称和ip地址 482
22.3 基于url的网络编程 483
22.3.1 url类 484
22.3.2 直接读取url内容 486
22.3.3 urlconnection类 487
22.4 基于tcp的网络编程 488
22.4.1 socket通信模型 488
22.4.2 服务器端程序设计 489
22.4.3 客户端程序设计 491
22.4.4 多客户端同时访问服务器端程序 493
22.5 基于udp的网络编程 494
22.5.1 udp通信模型 494
22.5.2 接收数据报程序设计 495
22.5.3 发送数据报程序设计 496
22.5.4 运行udp网络程序 498
22.6 小结 498
第23章 java数据库应用程序开发基础 499
在本章中,介绍了java的jdbc技术,以及如何使用java.sql包中的相关类编写数据库应用程序,最后还介绍了事务管理。其中应用java.sql包中的类编写数据库应用程序应是读者本章学习的重点。而在数据库程序中处理事务是本章学习的难点,读者应结合本书所提供的示例上机调试运行,以帮助理解相关的概念。
23.1 jdbc技术概述 499
23.1.1 jdbc技术介绍 499
23.1.2 jdbc的4种驱动程序 500
23.1.3 如何获得jdbc驱动程序 501
23.1.4 设置环境变量使得驱动程序可被访问 501
23.2 java.sql包 501
23.3 访问数据库 504
23.3.1 创建access odbc数据源 504
23.3.2 创建数据库连接 506
23.3.3 对数据库进行查询 507
23.3.4 增加、修改、删除数据库中数据 508
23.3.5 使用preparedstatement访问数据库 509
23.4 事务 509
23.5 小结 511
第24章 使用swing组件创建数据库应用程序 512
在本章中,通过若干实例学习了如何使用swing组件jcombobox、jlist和jtable创建数据库应用程序。读者在学习本章内容时,重点掌握jcombobox组件、jlist组件和jtable组件显示数据的方式。而这些组件所采用的mvc模式可能是读者学习的一个难点。建议读者将本章的示例上机调试和运行,细心体会mvc开发的模式。
24.1 使用jcombobox组件创建数据库应用程序 512
24.1.1 创建一个jcombobox 512
24.1.2 利用defaultcomboboxmodel创建jcombobox 515
24.2 使用jlist组件创建数据库应用程序 516
24.2.1 利用defaultlistmodel创建jlist 516
24.2.2 利用listmodel与abstractlistmodel创建jlist 518
24.3 使用jtable组件创建数据库应用程序 519
24.3.1 与jtable相关的类 520
24.3.2 利用defaulttablemodel创建jtable 521
24.4 小结 522
第5篇 java实战篇
第25章 案例1:拼图游戏 524
在本章中,通过一个完整的拼图游戏的开发过程,介绍了创建java应用程序的步骤和方法。重点对游戏的算法设计和代码实现做了详细的说明。在本例中,综合运用到了java的swing编程、继承类、集合和泛型的使用、事件处理等知识点,让读者真正达到独立开发的能力和综合运用多种知识的能力。
25.1 软件简介 524
25.1.1 应用背景 524
25.1.2 功能介绍 524
25.2 素材准备 525
25.3 算法设计 525
25.3.1 加载和拆分图片 525
25.3.2 实现图片的随机排列 526
25.3.3 实现图片的移动 526
25.3.4 参考图像的缩放 527
25.4 开发步骤 528
25.4.1 自定义按钮类设计:imagebutton类 528
25.4.2 游戏界面布局:构造窗体类puzzlegame 528
25.4.3 加载和拆分图像 529
25.4.4 创建拼接图面板 530
25.4.5 创建显示参考图像的面板 531
25.4.6 创建菜单栏 533
25.4.7 实现按钮事件监听器类 534
25.4.8 设置窗体在屏幕中出现的位置 535
25.4.9 编写main方法 535
25.4.10 运行测试 536
25.5 打包部署 536
25.6 小结 536
第26章 案例2:心心网络聊天室 537
在本章中,通过一个完整的网络聊天室的开发过程,介绍了创建java网络应用程序的步骤和方法。重点对程序的设计和功能模块划分及代码实现做了详细的说明。在本例中,综合运用到了java的socket编程技术、多线程处理等知识点,其中的多线程实现双向通信是本章学习的难点,读者可参考书中提供的示例源代码,实际上机调试并运行,以帮助理解。
26.1 软件简介 537
26.1.1 应用背景 537
26.1.2 需求分析 537
26.2 设计思路与原理 539
26.2.1 服务端 539
26.2.2 客户端 540
26.2.3 建立用户界面 540
26.3 业务流程图 541
26.4 应用程序实现 541
26.4.1 建立服务器:chatserver类 542
26.4.2 通信处理:chathandler类 543
26.4.3 建立客户端:chatclient类 545
26.4.4 消息封装:message类 548
26.5 软件部署 549
26.5.1 服务器端程序打包与部署 550
26.5.2 客户端程序打包与部署 550
26.5.3 运行测试 551
26.6 小结 551
第27章 案例3:惠文教育教务管理系统 552
数据库应用程序的开发,是java程序员最经常接触到的项目类型之一。数据库开发技术,同样也是java语言中最重要的技术之一。本案例通过一个真实的惠文教育教务管理系统,着重向读者介绍了从项目背景、需求分析、总体设计和概要设计、数据库设计与实现、功能代码实现到应用程序部署和运行测试的完整的开发过程,比较详细地向读者展示了java数据库应用程序的开发技术。
27.1 背景与主要技术介绍 552
27.1.1 应用背景 552
27.1.2 安装和配置mysql数据库 552
27.1.3 配置mysql数据库的jdbc驱动程序 557
27.2 总体设计与概要说明 558
27.2.1 功能模块划分 558
27.2.2 功能模块说明 559
27.3 业务流程图 559
27.3.1 登录模块流程 559
27.3.2 班主任管理模块流程 560
27.3.3 教务专员管理模块 560
27.3.4 人事专员管理模块 560
27.4 数据库设计 560
27.4.1 数据库需求分析 561
27.4.2 数据库概念结构设计 561
27.4.3 数据库逻辑结构设计 563
27.4.4 数据库结构的实现 565
27.5 应用程序实现 567
27.5.1 创建应用程序对象 567
27.5.2 实现登录模块 569
27.5.3 实现菜单栏 578
27.5.4 实现修改密码模块 580
27.5.5 实现“关于”对话框 587
27.5.6 实现人事管理模块 589
27.5.7 实现departmentinfobean、teacherinfobean信息封装类 605
27.5.8 实现departmentaction、teacheraction业务处理类 607
27.6 软件部署 613
27.7 项目总结 616
Java从初学到精通
光盘服务联系方式: 020-38250260 客服QQ:4006604884
云图客服:
用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问
Video Player
×
Audio Player
×
pdf Player
×
亲爱的云图用户,
光盘内的文件都可以直接点击浏览哦
无需下载,在线查阅资料!