《新概念Java程序设计大学教程》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:张基温编
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2016
  • ISBN:7302400342
  • 页数:418 页
图书介绍:本书内容:第一阶段,通过实例引导,训练初学者面向对象的思维能力。第2阶段通过一个故事,介绍面向对象程序设计的基本原则,让学习者知道什么是好的面向对象的程序。第3阶段是基于API的程序开发,训练学习者如何充分利用系统资源,高效地开发java应用程序。

第1篇 面向对象程序设计启步 3

第1单元 职员类 3

1.1 从现实世界中的对象到类模型 3

1.1.1 程序=模型+表现 3

1.1.2 现实世界中的对象分析 4

1.1.3 职员类的UML描述 5

1.1.4 职员类的Java语言描述 5

1.1.5 职员类的Java代码说明 6

1.2 类的应用与测试 8

1.2.1 对象引用及其创建 8

1.2.2 构造器与this() 9

1.2.3 对象成员的访问与this 11

1.2.4 主方法与主类 12

1.2.5 类文件与包 14

1.3 Java程序开发 16

1.3.1 Java编译器与Java虚拟机 16

1.3.2 JDK 16

1.3.3 Eclipse开发环境 18

1.4 知识链接 24

1.4.1 Java语言及其特点 24

1.4.2 Java数据类型 26

1.4.3 字面值 27

1.4.4 基本类型的转换 29

1.4.5 Java关键词与标识符 32

1.4.6 流与标准I/O流对象 33

1.4.7 Java注释 34

习题1 35

第2单元 计算器类 38

2.1 计算器类的定义 38

2.1.1 计算器建模 38

2.1.2 Calculator类的Java描述 39

2.2 Calculator类的测试 39

2.2.1 测试数据设计 39

2.2.2 规避整除风险——Calculator类改进之一 40

2.3 异常处理——Calculator类改进之二 42

2.3.1 Java异常处理概述 42

2.3.2 Java异常处理的基本形式 42

2.3.3 用throws向上层抛出异常 44

2.3.4 用throw直接抛出异常 45

2.3.5 Java提供的主要异常类 47

2.4 用选择结构确定计算类型——Calculator类改进之三 47

2.4.1 用if…else实现calculate()方法 47

2.4.2 关系操作符 49

2.4.3 用switch结构实现calculate()方法 50

2.5 用静态成员变量存储中间结果——Calculator类改进之四 52

2.5.1 静态成员变量的性质 52

2.5.2 带有静态成员变量的Calculator类定义 52

2.6 知识链接 54

2.6.1 Java表达式 54

2.6.2 静态方法——类方法 55

2.6.3 初始化块与静态初始化块 57

2.6.4 String类 60

2.6.5 正则表达式 61

2.6.6 Scanner类 63

习题2 64

第3单元 素数序列产生器 72

3.1 问题描述与对象建模 72

3.1.1 素数序列产生器建模 72

3.1.2 getPrimeSequence()方法的基本思路 72

3.2 使用isPrime()判定素数的PrimeGenerator类的实现 73

3.2.1 采用while结构的getPrimeSequence()方法 73

3.2.2 采用do…while结构的getPrimeSequence()方法 75

3.2.3 采用for结构的getPrimeSequence()方法 75

3.2.4 重复结构中的continue语句 76

3.2.5 采用for结构的isPrime()方法 76

3.2.6 将isPrime()定义为静态方法 77

3.2.7 不用isPrime()判定素数的PrimeGenerator类的实现 78

3.3 知识链接 79

3.3.1 变量的访问属性 79

3.3.2 变量的作用域 79

3.3.3 Java数据实体的生命期 80

3.3.4 基本类型的包装 81

习题3 83

第4单元 扑克游戏 90

4.1 数组与扑克牌的表示和存储 90

4.1.1 数组的概念 90

4.1.2 数组的声明与内存分配 90

4.1.3 数组的初始化 92

4.1.4 匿名数组 93

4.2 数组元素的访问 93

4.2.1 用普通循环结构访问数组元素 94

4.2.2 用增强for遍历数组元素 94

4.3 洗牌 95

4.3.1 随机数与Random类 95

4.3.2 洗牌方法设计 96

4.3.3 含有洗牌方法的扑克游戏类设计 98

4.4 扑克的发牌与二维数组 99

4.4.1 基本的发牌算法 99

4.4.2 用二维数组表示玩家手中的牌 100

4.4.3 使用二维数组的发牌方法 102

4.4.4 含有洗牌、发牌方法的扑克游戏类设计 102

4.5 知识链接 104

4.5.1 数组实用类Arrays 104

4.5.2 java.util.Vector类 105

4.5.3 命令行参数 107

4.5.4 Math类 108

习题4 109

第2篇 面向抽象的结构优化 115

第5单元 学生-研究生 115

5.1 学生类-研究生类层次结构 115

5.1.1 由Student类派生GradStudent类 115

5.1.2 super关键字 117

5.1.3 final关键字 119

5.2 Java的访问权限控制 119

5.2.1 类成员的访问权限控制 119

5.2.2 类的访问权限控制 120

5.2.3 private构造器 120

5.3 类层次中的类型转换 121

5.3.1 类层次中的赋值兼容规则 121

5.3.2 里氏代换原则 122

5.3.3 类型转换与类型测试 122

5.4 方法覆盖与隐藏 123

5.4.1 派生类实例方法覆盖基类中原型相同的实例方法 123

5.4.2 用@Override标注覆盖 124

5.4.3 派生类静态方法隐藏基类中原型相同的静态方法 126

5.4.4 JVM的绑定机制 127

5.5 知识链接 128

5.5.1 Object类 128

5.5.2 @Deprecated与@SuppressWarnings 131

5.5.3 Java异常类和错误类体系 135

习题5 137

第6单元 抽象类与接口 145

6.1 圆、三角形和矩形 145

6.1.1 3个独立的类:Circle、Rectangle和Triangle 145

6.1.2 枚举 147

6.2 抽象类 148

6.2.1 由具体类抽象出抽象类 148

6.2.2 由抽象类派生出实例类 150

6.2.3 抽象类小结 153

6.3 接口 153

6.3.1 接口及其特点 153

6.3.2 接口的实现类 154

6.3.3 关于接口的进一步讨论 156

6.4 知识链接 157

6.4.1 Java构件修饰符小结 157

6.4.2 对象克隆 158

习题6 160

第7单元 面向对象程序架构优化规则 164

7.0 引言 164

7.1 从可重用说起:合成/聚合优先原则 165

7.1.1 继承重用的特点 166

7.1.2 合成/聚合重用及其特点 166

7.1.3 合成/聚合优先原则 167

7.2 从可维护性说起:开-闭原则 168

7.2.1 软件的可维护性和可扩展性 168

7.2.2 开-闭原则 169

7.3 面向抽象编程 170

7.3.1 具体与抽象 170

7.3.2 依赖倒转原则 170

7.3.3 面向接口原则 170

7.3.4 面向接口编程举例 171

7.4 单一职责原则 175

7.4.1 对象的职责 175

7.4.2 单一职责原则的概念 176

7.4.3 接口隔离原则 176

7.5 不要和陌生人说话 181

7.5.1 狭义迪米特法则 181

7.5.2 广义迪米特法则 182

习题7 183

第8单元 设计模式 186

8.1 设计模式概述 186

8.2 设计模式举例——诉讼代理问题 186

8.2.1 无律师的涉讼程序设计 186

8.2.2 请律师代理的涉讼程序设计 187

8.2.3 关于代理模式 189

8.3 设计模式举例——商场营销问题 190

8.3.1 不用策略模式的商场营销解决方案 190

8.3.2 策略模式的定义 192

8.3.3 采用策略模式的商场营销解决方案 193

8.4 设计模式举例——图形对象的创建问题 197

8.4.1 简单工厂模式 197

8.4.2 工厂方法模式 202

8.4.3 策略模式与简单工厂模式结合 207

8.5 知识链接 209

8.5.1 类文件与类加载 209

8.5.2 Class对象 210

8.5.3 反射API 213

8.5.4 使用反射的工厂模式 215

8.5.5 使用反射+配置文件的工厂模式 216

习题8 218

第3篇 基于API的应用开发 223

第9单元 图形用户界面开发 223

9.1 图形用户界面概述 223

9.1.1 组件与容器 223

9.1.2 布局管理器与坐标系 225

9.1.3 事件与事件监听器 227

9.1.4 AWT、Swing、SWT和JFace 228

9.1.5 Swing程序设计的一般流程 229

9.2 Swing组件 229

9.2.1 Swing工具包 229

9.2.2 Swing组件体系与分类 230

9.2.3 Swing容器 232

9.2.4 Swing布局管理器 235

9.3 事件处理 239

9.3.1 事件及其分类 239

9.3.2 事件监听接口 240

9.3.3 事件监听适配器 243

9.4 嵌套类及其在事件处理中的应用 246

9.4.1 嵌套类及其分类 246

9.4.2 实名内部类 246

9.4.3 匿名内部类 248

习题9 250

第10单元 Java网络程序设计 251

10.1 IP地址与InetAddress类 251

10.1.1 IP协议与IP地址 251

10.1.2 InetAddress类 251

10.2 Java Socket概述 253

10.2.1 Socket的概念 253

10.2.2 客户端/服务器工作模式 253

10.3 面向TCP的Java Socket程序设计 254

10.3.1 Socket类和ServerSocket类 254

10.3.2 TCP Socket通信过程 255

10.3.3 TCP Socket程序设计 257

10.4 面向UDP的Java程序设计 260

10.4.1 DatagramPacket类 261

10.4.2 DatagramSocket类 261

10.4.3 UDP Socket程序设计 263

10.5 网络资源访问 266

10.5.1 URI、URL和URN 266

10.5.2 URL类 267

10.5.3 URLConnection类 268

10.6 知识链接 268

10.6.1 字节流与字符流 268

10.6.2 缓冲流与转换流 273

10.6.3 PrintWriter类 275

习题10 276

第11单元 JDBC 278

11.1 JDBC概述 278

11.1.1 JDBC的组成与工作过程 278

11.1.2 JDBC API及其对JDBC过程的支持 278

11.2 加载JDBC驱动 280

11.2.1 JDBC数据库驱动程序的类型 280

11.2.2 JDBC驱动类名与JDBC驱动下载 282

11.2.3 DriverManager类 282

11.2.4 注册Driver 284

11.3 连接数据源 286

11.3.1 数据源描述规则——JDBC URL 286

11.3.2 获取Connection对象 287

11.3.3 连接过程中的异常处理 290

11.3.4 Connection接口的常用方法 290

11.4 创建SQL工作空间进行数据库操作 291

11.4.1 SQL 291

11.4.2 创建SQL工作空间 293

11.4.3 用Statement实例封装SQL语句 293

11.5 处理结果集 295

11.5.1 结果集游标管理 295

11.5.2 getXxx()方法 295

11.5.3 updateXxx()方法 296

11.5.4 关闭数据库连接 296

11.5.5 JDBC数据库查询实例 296

11.6 PreparedStatement接口 299

11.6.1 用PreparedStatement实例封装SQL语句的特点 299

11.6.2 PreparedStatement接口的主要方法 299

11.6.3 PreparedStatement对象操作SQL语句的步骤 300

11.6.4 Java日期数据 303

11.7 事务处理 304

11.7.1 事务的概念 304

11.7.2 Connection类中有关事务处理的方法 304

11.7.3 JDBC事务处理程序的基本结构 305

11.8 DAO模式 307

11.8.1 DAO概述 307

11.8.2 DAO模式的基本结构 309

11.8.3 DAO程序举例 312

习题11 318

第12单元 JavaBean 320

12.1 JavaBean概述 320

12.1.1 软件组件与JavaBean 320

12.1.2 JavaBean结构 321

12.1.3 JavaBean规范 323

12.2 开发JavaBean 323

12.2.1 JavaBean API 323

12.2.2 JavaBean开发工具 324

习题12 326

第13单元 程序文档化、程序配置与程序发布 328

13.1 Javadoc 328

13.1.1 Javadoc及其结构 328

13.1.2 Javadoc标签 328

13.1.3 Javadoc应用规范 330

13.1.4 Javadoc命令 332

13.2 自定义Annotation 333

13.2.1 Annotation的基本定义格式 333

13.2.2 向Annotation注入数据 334

13.2.3 通过反射提取Annotation中的数据 335

13.2.4 用Annotation+反射设计DAO基类 336

13.3 Java程序配置 342

13.3.1 程序配置与程序配置文件 342

13.3.2 .properties文件 343

13.3.3 XML配置文件 345

13.3.4 基于InputStream输入流的配置文件的读取 346

13.3.5 基于资源绑定的配置文件读取 353

13.4 Java程序的打包与发布 354

13.4.1 Java程序的打包与JAR文件包 354

13.4.2 manifest文件 354

13.4.3 JAR命令 357

13.4.4 在Eclipse环境中创建可执行JAR包 359

13.4.5 在MyEclipse环境中创建可执行JAR包 361

习题13 361

第4篇 Java高级技术 365

第14单元 Java泛型编程 365

14.1 泛型基础 365

14.1.1 问题的提出 365

14.1.2 泛型方法 367

14.1.3 多泛型类 368

14.2 泛型语法扩展 369

14.2.1 泛型通配符 369

14.2.2 泛型设限 370

14.2.3 泛型嵌套 370

14.3 实例——利用泛型和反射机制抽象DAO 371

习题14 373

第15单元 Java多线程 375

15.1 Java多线程概述 375

15.1.1 进程与线程 375

15.1.2 Java线程的生命周期 376

15.1.3 Java多线程程序实例:室友叫醒 380

15.1.4 线程调度与线程优先级 384

15.1.5 知识链接:JVM运行时数据区 384

15.2 java.lang.Thread类 386

15.2.1 Thread类的构造器 386

15.2.2 Thread类中的优先级别静态常量 387

15.2.3 Thread类中影响线程状态的方法 387

15.2.4 Thread类中的一般方法 388

15.2.5 Thread类从Object继承的方法 388

15.3 多线程管理 388

15.3.1 多线程同步共享资源 388

15.3.2 线程死锁问题 390

15.3.3 线程组 390

习题15 391

第16单元 Java数据结构和接口 397

16.1 数据的逻辑结构与物理结构 397

16.1.1 数据的逻辑结构 397

16.1.2 数据的物理结构 398

16.1.3 Java数据结构API 400

16.2 接口及其应用 401

16.2.1 Collection接口及其方法 401

16.2.2 List接口及其实现 402

16.2.3 Set接口及其实现 404

16.3 聚集的标准输出 406

16.3.1 Iterator接口 406

16.3.2 foreach 407

16.4 Map接口类及其应用 408

16.4.1 Map接口的定义与方法 408

16.4.2 Map.Entry接口 408

16.4.3 HashMap类和TreeMap类 409

习题16 411

附录 413

附录A 符号 413

A.1 Java主要操作符的优先级和结合性 413

A.2 Javadoc标签 413

附录B Java运行时异常类和错误类 414

B.1 RuntimeException类 414

B.2 Error类 415

附录C Java常用工具包 416

参考文献 418