《Java语言的科学与艺术》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:(美)Eric S.Roberts著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2009
  • ISBN:9787302184416
  • 页数:457 页
图书介绍:本书以清晰简练的叙述方式,讲解了Java语言的方方面面,以帮助学生打下学习编程技术的基础。

第1章 前言 1

1.1计算简史 1

1.2计算机科学的含义 3

1.3计算机硬件简介 4

1.3.1CPU 5

1.3.2内存 5

1.3.3辅助存储器 5

1.3.4输入/输出(I/O)设备 5

1.3.5网络 5

1.4算法 6

1.5编程过程的几个阶段 6

1.5.1创建和编程序 7

1.5.2编译过程 7

1.5.3编程错误与调试 9

1.5.4软件维 9

1.6 Java和面向对象范例 10

1.6.1面向对象编程的历史 11

1.6.2 Java编程语言 11

1.7 Java和WWW 14

1.8小结 15

1.9复习题 16

第2章 编程示例 17

2.1 “Hello world”程序 18

2.1.1注释 19

2.1.2输入 19

2.1.3 主类 19

2.2编程过程的观点 21

2.3两数相加的程序 22

2.4编程习语和模式 25

2.5类和对象 26

2.5.1类的层次结构 27

2.5.2 Program类的层次结构 28

2.6图形程序 29

2.6.1 HelloProgram示例回顾 29

2.6.2向GObjects发送消息 30

2.6.3 GObject类的层次结构 32

2.6.4 GRect类 33

2.6.5 GOval类 36

2.6.6 GLine类 37

2.7小结 38

2.8复习题 39

2.9编程练习 40

第3章 表达式 43

3.1原始数据类型 44

3.2常量与变量 45

3.2.1常量 45

3.2.2变量 46

3.2.3声明 47

3.2.4命名常量 48

3.3运算符和操作数 48

3.3.1合并整数和浮点数 49

3.3.2整数除法和余数运算符 50

3.3.3优先级 50

3.3.4应用优先级规则 52

3.3.5类型转换 53

3.4赋值语句 55

3.4.1简写赋值运算符 57

3.4.2递增运算符和递减运算符 58

3.5布尔表达式 58

3.5.1关系运算符 58

3.5.2逻辑运算符 59

3.5.3短路赋值 61

3.5.4标记 62

3.5.5Boolean计算示例 62

3.6设计改变 63

3.6.1可读性的重要性 63

3.6.2使用命名常量支持程序维护 64

3.6.3使用命名常量支持程序开发 64

3.7小结 66

3.8复习题 68

3.9编程练习 69

第4章 语句形式 73

4.1 Java的语句类型 74

4.1.1简单语句 74

4.1.2复合语句 75

4.1.3控制语句 76

4.2控制语句和问题解决 76

4.2.1一般化Add2lntegers程序 77

4.2.2重复N次模式 78

4.2.3“读取到指定条件为止”模式 79

4.3 if语句 80

4.3.1单行if语句 82

4.3.2多行if语句 82

4.3.3if-else语句 83

4.3.4级联if语句 83

4.3.5?:运算符 84

4.4 switch语句 85

4.5 while语句 88

4.5.1使用while循环 88

4.5.2无限循环 90

4.5.3解决“循环到中途”问题 90

4.6 for语句 92

4.6.1 for和while之间的关系 94

4.6.2在浮点数据中使用for语句 95

4.6.3嵌套for语句 96

4.6.4简单的图形动画 97

4.7小结 99

4.8复习题 100

4.9编程练习 100

第5章 方法 105

5.1方法概述 105

5.1.1作为降低复杂性机制的方法 106

5.1.2作为编程人员工具而不是用户工具的方法 106

5.1.3作为表达式的方法调用 107

5.1.4作为消息的方法调用 108

5.2编写自己的方法 109

5.2.1方法定义的格式 109

5.2.2 return语句 110

5.2.3包含内部控制结构的方法 111

5.2.4返回非数字值的方法 112

5.2.5断言方法 115

5.3方法调用过程的技巧 116

5.3.1参数传递 117

5.3.2从其他方法内调用方法 120

5.4分解 126

5.4.1逐步细化 126

5.4.2指定参数 128

5.4.3自顶向下设计 129

5.4.4寻找共同特征 130

5.4.5完成分解 131

5.5算法方法 132

5.5.1“强力”方法 132

5.5.2欧几里得算法 133

5.5.3讨论欧几里得算法的正确性 133

5.5.4两种算法的效率比较 134

5.6小结 135

5.7复习题 135

5.8编程练习 136

第6章 对象和类 141

6.1使用RandomGenerator类 142

6.1.1伪随机数 142

6.1.2使用RandomGenerator类 143

6.1.3随机数种子的作用 145

6.2 javadoc文档系统 146

6.3定义自己的类 149

6.3.1类定义的结构 149

6.3.2控制条目的可见性 150

6.3.3封装 150

6.4表示学生信息 150

6.4.1声明实例变量 151

6.4.2完成类定义 151

6.4.3编写javadoc注释 154

6.4.4写构造函数 154

6.4.5 getters and setters 155

6.4.6 toString方法 155

6.4.7定义类中的命名常量 156

6.4.8使用Student类 156

6.5有理数 157

6.6扩展现有类 161

6.6.1创建类表示实心三角形 161

6.6.2继承构造函数的规则 165

6.6.3继承方法的规则 165

6.7小结 167

6.8复习题 168

6.9编程练习 169

第7章 对象和内存 175

7.1内存结构 176

7.1.1位、字节和字 176

7.1.2二进制和十六进制表示法 176

7.1.3内存地址 178

7.2将内存分配给变量 179

7.2.1 Rational类的内存图 180

7.2.2无用单元收集 184

7.3原始类型与对象 185

7.3.1参数传递 185

7.3.2包装类 187

7.3.3装箱和拆箱 189

7.4链接对象 190

7.4.1链接结构里的消息传递:Gondor灯塔 191

7.4.2链接结构的内部表示法 193

7.5小结 194

7.6复习题 195

7.7编程练习 195

第8章 字符串和字符 199

8.1枚举的原则 200

8.1.1在计算机内部表示枚举类型 200

8.1.2将枚举类型作为整数表示 201

8.1.3定义新的枚举类型 202

8.2字符 203

8.2.1 char数据类型 203

8.2.2 ASCII和Unicode编码系统 203

8.2.3字符常量 205

8.2.4 Unicode表示法的重要属性 205

8.2.5特殊字符 206

8.2.6字符算法 207

8.2.7 Character类中有用的方法 208

8.2.8包含字符的控制语句 209

8.3作为抽象概念的字符串 210

8.3.1从整体和简化论的观点考察字符串 210

8.3.2抽象类型的概念 210

8.4使用String类中的方法 211

8.4.1确定字符串长度 212

8.4.2从字符串中选择字符 212

8.4.3串联 213

8.4.4摘录部分字符串&21. 5

8.4.5比较两个字符串 215

8.4.6在字符串内搜索 216

8.4.7大小写字母转换 217

8.5字符串处理案例研究 218

8.5.1应用自顶向下设计 218

8.5.2实现translateLine 219

8.5.3考虑空格和标点符号 220

8.5.4 StringTokenizer类 222

8.5.5完成实现 223

8.6小结 226

8.7复习题 227

8.8编程练习 228

第9章 面向对象图形 237

9.1 acm.graphics模型 238

9.2 acm.graphics程序包的结构 238

9.2.1 GCanvas类 239

9.2.2 Color类的更多细节 241

9.2.3 GPoint类、GDimension类和GRectangle类 241

9.2.4 GMath类 242

9.2.5 GObject类及其子类 243

9.3使用形状类 246

9.3.1 GLabel类 246

9.3.2 GRect类及其子类(GRoundRect和G3DRect) 248

9.3.3 GOval类 249

9.3.4 GLine类 249

9.3.5 GArc类 250

9.3.6 GImage类 253

9.3.7 GPolygon类 257

9.4创建复合对象 262

9.4.1简单的GCompound示例 263

9.4.2 GCompound坐标系 265

9.4.3使用GCompound的对象分解 265

9.4.4嵌套GCompound对象 269

9.5小结 270

9.6复习题 271

9.7编程练习 272

第10章 事件驱动程序 279

10.1 Java事件模型 280

10.2简单的事件驱动程序 281

10.3响应鼠标事件 283

10.3.1 MouseListener和MouseMotionListener接口 283

10.3.2重写侦听器方法 283

10.3.3画线程序 284

10.3.4在画布上拖动对象 286

10.4响应键盘事件 288

10.5创建简单的GUI 289

10.6 Swing交互器层次结构 291

10.6.1 JButton类 292

10.6.2 JToggleButton类 293

10.6.3 JCheckBox类 293

10.6.4 JRadioButton类和ButtonGroup类 295

10.6.5 JSlider类和JLabel类 296

10.6.6 JComboBox类 297

10.6.7 JTextField类、IntField类和DoubleField类 300

10.7管理组件布局 304

10.7.1 Java窗口层次结构 304

10.7.2布局管理器 305

10.7.3 BorderLayout布局管理器 305

10.7.4 FlowLayout布局管理器 307

10.7.5 GridLayout布局管理器 308

10.7.6标准布局管理器的不足 309

10.8使用TableLayout类 309

10.8.1比较GridLayout与TableLayout 310

10.8.2使用TableLayout创建温度转换器 310

10.8.3指定约束 312

10.8.4使用TableLayout创建简单的计算器 313

10.9小结 319

10.10复习题 320

10.11编程练习 321

第11章 数组与ArrayList类 327

11.1数组简介 328

11.1.1数组声明 328

11.1.2数组选择 329

11.1.3简单数组的示例 330

11.1.4改变索引范围 331

11.1.5对象的数组 332

11.1.6在图形程序中使用数组 332

11.1.7++和--运算符的区别 334

11.2数组的内部表示法 335

11.3数组作为参数传递 337

11.4使用数组制作表格 341

11.5数组初始化 343

11.6多维数组 344

11.6.1将多维数组传递给方法 345

11.6.2初始化多维数组 346

11.7图像处理 346

11.7.1图像的表示方式 346

11.7.2使用GImage类操作图像 347

11.7.3位操作 348

11.7.4使用位操作分解像素组件 350

11.7.5创建灰度图像 350

11.7.6通过平均使图像变得平滑 351

11.7.7隐藏复杂性 353

11.8 ArrayList类 354

11.9小结 358

11.10复习题 359

11.11编程练习 360

第12章 搜索与排序 369

12.1搜索 370

12.1.1在整数数组中搜索 370

12.1.2搜索表 370

12.1.3折半搜索 373

12.1.4搜索算法的相对效率 375

12.2排序 376

12.2.1给整数数组排序 376

12.2.2选项排序算法 377

12.2.3评估选项排序的效率 379

12.2.4测量程序的运行时间 380

12.2.5分析选项排序算法 381

12.2.6基数排序算法 382

12.3评估算法效率 384

12.3.1 big-O表示法 385

12.3.2 big-O的标准简化 385

12.3.3选项排序计算的复杂性 385

12.3.4根据代码结构预测计算的复杂性 386

12.3.5最坏情况与一般情况的复杂性 387

12.4使用数据文件 388

12.4.1文件的概念 388

12.4.2阅读Java中的文本文件 389

12.4.3异常处理 391

12.4.4倒转文件的程序 393

12.4.5交互地选择文件 394

12.4.6使用Scanner类 395

12.4.7输出文件 397

12.5小结 397

12.6复习题 398

12.7编程练习 400

第13章 数组与ArrayList类 405

13.1 ArrayList类回顾 406

13.1.1动态分配的能力 406

13.1.2区分表示法和行为 408

13.2 HashMap类 409

13.2.1映射的简单示例 409

13.2.2探讨可能的实现策略 410

13.2.3实现O(1)性能 411

13.2.4散列法思想 412

13.2.5散列码 412

13.2.6复制散列码 413

13.2.7映射类的简单实现 413

13.2.8实现hashCode方法 416

13.2.9调整存储区的数量 418

13.3 Java集合架构 418

13.3.1 Java集合架构的结构 419

13.3.2 Collection层次结构 420

13.3.3区分行为和表示法 421

13.3.4迭代器 422

13.3.5 Arrays和Collections方法库 424

13.4面向对象设计的原则 426

13.4.1统一主题的重要性 427

13.4.2简单和信息隐藏的原则 428

13.4.3满足客户的需要 428

13.4.4灵活性的好处 429

13.4.5稳定的意义 429

13.5小结 430

13.6复习题 430

13.7编程练习 431

第14章 展望 435

14.1递归 436

14.1.1递归的简单示例 436

14.1.2 Factorial函数 437

14.1.3信任的递归式跳跃 440

14.1.4递归的范例 441

14.1.5图形递归 442

14.1.6递归式思考 444

14.2并发 445

14.2.1进程与线程 445

14.2.2并发的简单示例 445

14.3使用网络 448

14.4编程模式 448

14.4.1模型/视图/控制器模式 449

14.4.2说明性示例:用图表示电子数据表的数据 449

14.5小结 453

14.6复习题 454

14.7编程练习 454