本书是java语言的经典教材,中文版分为《java语言程序设计 基础篇》和《java语言程序设计 进阶篇》。基础篇从java语言的特点人手,介绍了语法结构、面向对象程序设计基础知识到面向对象程序设计、图形用户界面设计、异常处理、二进制i/o和递归等内容。进阶篇主要介绍数据结构、高级gui设计、多线程、集合架构、网络和web程序设计、算法效率和排序、mvc,以及高级java数据库程序设计等方面的内容,循序渐进,可读性强。全书分八部分,以示例讲解解决问题的技巧,提供大量的程序清单和相应的提示,每章配有大量复习题和难易程度不同的编程习题,帮助读者掌握编程技术,并应用所学的技术解决实际应用程序开发中遇到的问题。.
目录
- 出版者的话.
- 译者序
- 前言
- 第1篇 程序设计基础
- 第1章 计算机、程序和java概述 2
- 1.1 引言 2
- 1.2 什么是计算机 2
- 1.2.1 中央处理器 3
- 1.2.2 内存 3
- 1.2.3 存储设备 3
- 1.2.4 输入输出设备 4
- 1.2.5 通信设备 5
- 1.3 程序 5
- 1.4 操作系统 6
- 1.4.1 控制和监视系统的活动 7
- 1.4.2 分配系统资源 7
- 1.4.3 安排操作的顺序 7
- 1.5 数系(可选) 7
- 1.5.1 二进制数与十进制数的转换 8
- 1.5.2 十六进制数与十进制数的转换 8
- .1.5.3 二进制数与十六进制数的转换 9
- 1.6 java、万维网及其他 10
- 1.7 java语言规范、api、jdk和ide 12
- 1.8 一个简单的java程序 12
- 1.9 创建、编译和运行java程序 13
- 1.10 java程序剖析 15
- 1.10.1 注释 15
- 1.10.2 保留字 15
- 1.10.3 修饰符 15
- 1.10.4 语句 16
- 1.10.5 块 16
- 1.10.6 类 16
- 1.10.7 方法 16
- 1.10.8 main方法 16
- 1.11 用消息对话框显示文本信息 16
- 第2章 基本数据类型和基本操作 21
- 2.1 引言 21
- 2.2 编写简单的程序 21
- 2.3 标识符 23
- 2.4 变量 24
- 2.5 赋值语句和赋值表达式 24
- 2.6 常量 25
- 2.7 数值数据类型及其运算 26
- 2.7.1 算术运算符 27
- 2.7.2 数值直接量 28
- 2.7.3 算术表达式 29
- 2.7.4 简捷赋值运算符 29
- 2.8 数值类型转换 31
- 2.9 字符数据类型及其运算 32
- 2.9.1 统一码和ascⅱ码 32
- 2.9.2 特殊字符的转义序列表示 33
- 2.9.3 字符型char数据与数值型数据之间的转换 33
- 2.10 字符串类型string 34
- 2.11 从输入对话框获取输入 35
- 2.12 实例学习 36
- 2.12.1 举例:计算贷款支付额 36
- 2.12.2 举例:整钱兑零 38
- 2.12.3 举例:显示当前时间 40
- 2.13 从控制台获取输入 41
- 2.14 编程风格和文档 43
- 2.14.1 适当的注释和注释风格 44
- 2.14.2 命名习惯 44
- 2.14.3 适当的缩进和空白 44
- 2.14.4 块的对齐方式 44
- 2.15 编程错误 45
- 2.15.1 语法错误 45
- 2.15.2 运行错误 45
- 2.15.3 逻辑错误 46
- 2.16 调试 46
- 第3章 条件语句 53
- 3.1 引言 53
- 3.2 boolean数据类型及其运算 53
- 3.2.1 条件和无条件布尔运算符 55
- 3.2.2 举例:决定闰年 56
- 3.2.3 举例:简单的算术学习工具 56
- 3.3 if语句 57
- 3.3.1 简单if语句 57
- 3.3.2 if...else语句 59
- 3.3.3 if语句的嵌套 60
- 3.3.4 举例:税款计算问题 61
- 3.3.5 举例:改进的算术学习工具 63
- 3.4 switch语句 64
- 3.5 条件表达式 66
- 3.6 格式化控制台输出与字符串 66
- 3.7 运算符的优先级和结合方向 68
- 3.8 运算对象的计算顺序 69
- 第4章 循环 75
- 4.1 引言 75
- 4.2 while循环 75
- 4.2.1 举例:高级算术学习工具 76
- 4.2.2 使用确认对话框控制循环 77
- 4.2.3 使用标志值控制循环 78
- 4.3 do-while循环 79
- 4.4 for循环 80
- 4.5 采用哪种循环 81
- 4.6 嵌套循环 82
- 4.7 最小化数值误差 83
- 4.8 实例学习 84
- 4.8.1 举例:求最大公约数 84
- 4.8.2 举例:计算销售额 86
- 4.8.3 举例:显示数字构成的金字塔 88
- 4.9 关键字break和continue 89
- 4.9.1 语句标号以及利用标号中止循环(可选) 91
- 4.9.2 举例:显示素数(可选) 91
- 第5章 方法 101
- 5.1 引言 101
- 5.2 创建方法 101
- 5.3 调用方法 102
- 5.4 void方法举例 104
- 5.5 参数的值传递 105
- 5.6 重载方法 107
- 5.7 实例学习:使用方法计算税款 108
- 5.8 变量的作用域 110
- 5.9 数学类math 111
- 5.9.1 三角函数方法 111
- 5.9.2 指数函数方法 111
- 5.9.3 取整方法 112
- 5.9.4 min、max和abs方法 112
- 5.9.5 random方法 113
- 5.10 实例学习:生成随机字符 113
- 5.11 方法抽象和逐步求精 115
- 5.11.1 自顶向下的设计 115
- 5.11.2 自顶向下和自底向上的实现 117
- 5.11.3 实现细节 118
- 5.12 包(可选) 121
- 5.12.1 包的命名习惯 121
- 5.12.2 包的目录 121
- 5.12.3 在包中添加类 122
- 5.12.4 使用包中的类 123
- 第6章 数组 132
- 6.1 引言 132
- 6.2 数组基本知识 132
- 6.2.1 声明数组变量 132
- 6.2.2 创建数组 133
- 6.2.3 数组的大小和默认值 133
- 6.2.4 数组下标变量 134
- 6.2.5 数组初始化 134
- 6.2.6 处理数组 134
- 6.2.7 foreach循环 135
- 6.2.8 举例:测试数组 136
- 6.2.9 举例:划分成绩等级 137
- 6.3 数组的复制 138
- 6.4 给方法传递数组参数 139
- 6.5 从方法中返回数组 142
- 6.6 变长参数列表(可选) 144
- 6.7 数组的查找 145
- 6.7.1 线性查找法 145
- 6.7.2 二分查找法 146
- 6.8 数组的排序 147
- 6.8.1 选择排序 147
- 6.8.2 插入排序(可选) 149
- 6.9 arrays类 150
- 6.10 二维数组 151
- 6.10.1 声明二维数组变量和创建二维数组 151
- 6.10.2 求二维数组的长度 152
- 6.10.3 锯齿数组 153
- 6.10.4 处理二维数组 153
- 6.10.5 举例:多选题评分 154
- 6.10.6 举例:计算税款(可选) 156
- 6.11 多维数组(可选) 157
- 第2篇 面向对象程序设计
- 第7章 对象和类 168
- 7.1 引言 168
- 7.2 定义对象的类 168
- 7.3 构造方法 170
- 7.4 通过引用变量来访问对象 170
- 7.4.1 引用变量和引用类型 170
- 7.4.2 访问对象的数据和方法 171
- 7.4.3 举例:声明类并创建对象 171
- 7.4.4 数据域引用和空值null 174
- 7.4.5 基本数据类型变量和引用类型变量的区别 ..174
- 7.5 使用java类库中的类 175
- 7.5.1 date类 175
- 7.5.2 random类 176
- 7.6 静态变量、常量和静态方法 176
- 7.7 可见性修饰符 180
- 7.8 数据域封装 181
- 7.9 不可变对象和类 183
- 7.10 给方法传递对象参数 184
- 7.11 变量的作用域 185
- 7.12 关键字this 186
- 7.13 对象数组 187
- 7.14 类的抽象和封装 189
- 7.15 实例学习:贷款类loan 189
- 7.16 实例学习:课程类course 193
- 7.17 实例学习:整数栈类stackofintegers(可选) 194
- 7.18 创建窗口(可选 gui) 196
- 第8章 字符串和文本i/o 206
- 8.1 引言 206
- 8.2 字符串类string 206
- 8.2.1 构造一个字符串 206
- 8.2.2 不可变字符串与限定字符串 207
- 8.2.3 字符串的比较 208
- 8.2.4 字符串长度以及提取单个字符 209
- 8.2.5 字符串的连接 210
- 8.2.6 提取子串 210
- 8.2.7 字符串的转换 210
- 8.2.8 获取字符串中的一个字符或子串 211
- 8.2.9 字符串与数组之间的转换 211
- 8.2.10 将字符值和数值转换成字符串 212
- 8.2.11 举例:检测回文串 212
- 8.3 字符类character 213
- 8.4 stringbuilder/stringbuffer类 215
- 8.4.1 修改缓冲区中的字符串 216
- 8.4.2 tostring、capacity、length、setlength和charat方法 217
- 8.4.3 举例:忽略既非字母又非数字的字符,判断回文串 217
- 8.5 命令行参数 219
- 8.5.1 向main方法传递字符串 219
- 8.5.2 举例:处理命令行参数 220
- 8.6 正则表达式(可选) 221
- 8.6.1 字符串匹配 221
- 8.6.2 正则表达式语法 221
- 8.6.3 字符串的替换和分解 223
- 8.7 文件类file 224
- 8.8 文本i/o 226
- 8.8.1 使用printwriter写数据 226
- 8.8.2 使用scanner读数据 227
- 8.8.3 举例:替换文本 228
- 8.9 容器和布局管理器(可选gui) 229
- 第9章 继承和多态 239
- 9.1 引言 239
- 9.2 父类和子类 239
- 9.3 使用关键字super 243
- 9.3.1 调用父类的构造方法 244
- 9.3.2 构造方法链 244
- 9.3.3 调用父类的方法 245
- 9.4 方法覆盖 245
- 9.5 覆盖和重载 246
- 9.6 对象类object和它的tostring()方法 246
- 9.7 多态性、动态绑定和一般程序设计 247
- 9.8 对象转换和instanceof运算符 248
- 9.9 数组线性表arraylist类 251
- 9.10 自定义栈类 253
- 9.11 protected数据和方法 254
- 9.12 final类、方法和变量 255
- 9.13 对象类object中的方法(可选) 256
- 9.13.1 equals方法 256
- 9.13.2 hashcode方法 257
- 9.13.3 finalize方法 257
- 9.13.4 clone方法 258
- 9.13.5 getclass方法 258
- 9.14 数据域和静态方法的隐藏(可选) 259
- 9.15 初始化模块(可选) 260
- 9.16 gui组件的继承(可选 gui) 262
- 第10章 抽象类和接口 271
- 10.1 引言 271
- 10.2 抽象类 271
- 10.3 日历类calendar和公历类gregoriancalendar 275
- 10.4 接口 276
- 10.4.1 声明类以实现comparable接口 277
- 10.4.2 接口与抽象类 278
- 10.4.3 创建自定义接口 280
- 10.4.4 可克隆接口cloneable(可选) 281
- 10.5 将基本数据类型值处理为对象 283
- 10.5.1 数值包装类的构造方法 284
- 10.5.2 数值包装类的常量 285
- 10.5.3 转换方法 285
- 10.5.4 静态方法valueof 285
- 10.5.5 将字符串转换为数值的方法 285
- 10.5.6 biginteger和bigdecimal类(可选) 286
- 10.5.7 举例:对一个对象数组排序 286
- 10.6 基本类型和包装类之间的自动转换 288
- 10.7 处理gui事件(可选gui) 288
- 第11章 面向对象设计 295
- 11.1 引言 295
- 11.2 软件开发过程 295
- 11.3 分析类之间的关系 296
- 11.3.1 关联 296
- 11.3.2 聚集和组合 297
- 11.3.3 依赖 298
- 11.3.4 继承 298
- 11.4 实例学习:面向对象的设计 299
- 11.5 实例学习:有理数类rational 304
- 11.6 类的设计原则 308
- 11.6.1 内聚性 308
- 11.6.2 一致性 308
- 11.6.3 封装性 308
- 11.6.4 清晰性 308
- 11.6.5 完整性 309
- 11.6.6 实例instance和静态修饰符static 309
- 11.6.7 继承和聚集 310
- 11.6.8 接口和抽象类 310
- 11.7 用顺序图和状态图模拟动态行为(可选) 310
- 11.7.1 顺序图 310
- 11.7.2 状态图 311
- 11.8 使用java api在架构基础上编程 311
- 第3篇 图形用户界面程序设计
- 第12章 图形用户界面程序设计入门 316
- 12.1 引言 316
- 12.2 gui组件 316
- 12.3 java gui api 317
- 12.3.1 swing gui组件 318
- 12.3.2 容器类 319
- 12.3.3 gui辅助类 319
- 12.4 框架 319
- 12.4.1 创建框架 319
- 12.4.2 在框架中添加组件 320
- 12.5 布局管理器 321
- 12.5.1 flowlayout 322
- 12.5.2 gridlayout 323
- 12.5.3 borderlayout 325
- 12.5.4 布局管理器的属性 326
- 12.5.5 validate和dolayout方法(可选) 326
- 12.6 color类 327
- 12.7 font类 327
- 12.8 使用面板作子容器 328
- 12.9 swing gui组件的一般特性 329
- 12.10 图像图标 331
- 第13章 图形 338
- 13.1 引言 338
- 13.2 图形坐标系 338
- 13.3 graphics类 339
- 13.4 paintcomponent方法 340
- 13.5 在面板上绘图 342
- 13.6 绘制字符串、直线、矩形和椭圆 343
- 13.7 实例学习:figurepanel类 344
- 13.8 绘制弧形 347
- 13.9 polygon类以及绘制多边形和折线段 348
- 13.10 利用fontmetrics类居中显示 350
- 13.11 实例学习:messagepanel类 352
- 13.12 实例学习:stillclock类(可选) 356
- 13.13 显示图像(可选) 359
- 13.14 实例学习:imageviewer类(可选) 361
- 第14章 事件驱动程序设计 369
- 14.1 引言 369
- 14.2 事件和事件源 370
- 14.3 事件的监听、注册和处理 370
- 14.3.1 内部类监听器 373
- 14.3.2 匿名内部类监听器 375
- 14.3.3 举例:处理简单行为的事件 376
- 14.3.4 举例:处理窗口事件 377
- 14.3.5 监听器接口适配器 379
- 14.4 鼠标事件 380
- 14.5 键盘事件 382
- 14.6 使用timer类的动画(可选) 384
- 第15章 创建图形用户界面 391
- 15.1 引言 391
- 15.2 按钮 391
- 15.2.1 图标、按下图标和翻转图标 392
- 15.2.2 对齐方式 393
- 15.2.3 文本位置 394
- 15.2.4 举例:使用按钮 394
- 15.3 复选框 396
- 15.4 单选按钮 399
- 15.5 标签 401
- 15.6 文本域 402
- 15.7 文本区域 404
- 15.8 组合框 407
- 15.9 列表框 410
- 15.10 滚动条 413
- 15.11 滑动块 415
- 15.12 创建多个窗口 417
- 第16章 applet和多媒体 428
- 16.1 引言 428
- 16.2 applet类 428
- 16.2.1 init方法 429
- 16.2.2 start方法 430
- 16.2.3 stop方法 430
- 16.2.4 destroy方法 430
- 16.3 japplet类 430
- 16.4 html文件和applet标记 431
- 16.4.1 使用applet浏览工具浏览applet 432
- 16.4.2 在web浏览器中浏览applet 432
- 16.4.3 举例:贷款applet 433
- 16.5 让applet像应用程序一样运行 436
- 16.6 向applet传递字符串参数 437
- 16.7 实例学习:三子棋游戏(可选) 440
- 16.8 实例学习:跳动的小球(可选) 444
- 16.9 使用url类定位资源(可选) 447
- 16.10 播放音频(可选) 448
- 16.11 实例学习:多媒体动画(可选) 449
- 16.12 java工程的打包和发行(可选) 452
- 16.12.1 清单文件manifest 452
- 16.12.2 运行存档项目 452
- 第4篇 异常处理、i/o和递归
- 第17章 异常和断言 462
- 17.1 引言 462
- 17.2 异常处理概述 462
- 17.3 异常和异常类型 464
- 17.4 理解异常处理 466
- 17.4.1 声明异常 466
- 17.4.2 抛出异常 466
- 17.4.3 捕获异常 467
- 17.4.4 从异常获取信息 468
- 17.4.5 举例:声明、抛出和捕获异常 470
- 17.5 finally子句 472
- 17.6 何时使用异常 473
- 17.7 重新抛出异常 473
- 17.8 链式异常(可选) 473
- 17.9 创建自定义异常类(可选) 474
- 17.10 断言(可选) 475
- 17.10.1 声明断言 475
- 17.10.2 运行带断言的程序 476
- 17.10.3 使用异常处理或断言 476
- 第18章 二进制i/o 485
- 18.1 引言 485
- 18.2 在java中如何处理输入输出 485
- 18.3 文本i/o与二进制i/o 486
- 18.4 二进制i/o类 487
- 18.4.1 fileinputstream类和fileoutputstream类 488
- 18.4.2 filterinputstream类和filteroutputstream类 490
- 18.4.3 datainputstream类和dataoutputstream类 490
- 18.4.4 bufferedinputstream类和bufferedoutputstream类 492
- 18.5 实例学习:文件复制 493
- 18.6 对象输入输出 495
- 18.6.1 可序列化接口serializable 497
- 18.6.2 序列化数组 497
- 18.7 随机读写文件(可选) 498
- 18.8 实例学习:地址簿(可选) 501
- 第19章 递归 511
- 19.1 引言 511
- 19.2 举例:阶乘 511
- 19.3 举例:斐波那契数 513
- 19.4 使用递归解决问题 515
- 19.5 递归辅助方法 516
- 19.5.1 选择排序 516
- 19.5.2 二分查找 517
- 19.6 汉诺塔问题 517
- 19.7 分形 520
- 19.8 递归与迭代 522
- 附录a java关键字 528
- 附录b ascii码字符集 529
- 附录c 运算符优先级表 530
- 附录d java修饰符 531
- 附录e 特殊浮点值 532
- 附录f 位运算符 ...533