JAVA程序员指南(国外经典教材计算机科学与技术)

JAVA程序员指南(国外经典教材计算机科学与技术)
作 者: Douglas Lyon 朱剑平 汪青青 朱剑平
出版社: 清华大学出版社
丛编项: 国外经典教材·计算机科学与技术
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: Java
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《JAVA程序员指南(国外经典教材计算机科学与技术)》作者简介

内容简介

鱼从头烂起。—谚语Java正成为Internet上的通用语言,同时也是讲授编程时最常用的语言。Lyon博士为Java所做的贡献,就像Strunk先生和White先生为英语所做的贡献一样多。他告诉人们怎样来写精练而有效的Java程序。和英语一样,Java也在不断地发展和完善。就像英语中依然还存在一些陈词滥调或性别歧视的代词而令人感到遗憾一样,Lyon博士偶尔也会为Java的一些“饱受争议”的特性而叹息,但他还是为新版本的Java的强大功能和表现力感到高兴和愉悦。注意此书并非简单的语言说明,因为Lyon在用Java思考问题,甚至做梦都是Java。Lyon仿佛是为面向对象而生的,而随着Java的出现,他与计算机的姻缘也上升到新的高度。Lyon行文或优雅大方,或充满激情,或异想天开,始终不变的是清晰与简洁。本书如实地反映了Java的全貌,目前,Java的API包含2000多个类、20000多个成员(本书以首字母缩略词的形式罗列出来了)。我了解很多编程语言,也曾教过书,现在又是Java的初学者。我以读者的身份从头至尾地拜读了这本极富教学性的书。苏格拉底式的对话,清晰透彻地阐述了如何依据Java规范成功地设计决策。富有启发性的正反示例阐明了深奥的Java特性。另外,在本书的各章后面均有习题,习题的难度逐渐提高,旨在强化实践能力。前面几章简要介绍了Java的核心,并提供了一些实例,这些实例是我见过的有关面向对象设计方面最清楚、最具说服力的。Lyon也强调内部文档和外部文档的重要性,因此本书安排了一些章节,透彻地讲解了软件设计工具和JavaDoc,JavaDoc可以根据源代码的注释自动生成HTML页面。作为程序员中的程序员,Lyon尤为擅长有关类型、继承、嵌套类和接口、映射以及静态和动态代理委派等方面的设计。他带领读者进入操作系统(线程)、图形界面(利用Swing和AWT库生成的图标、字体和图)、数据库链接(SQL的JDBC)、网络(浏览器、XML和电子邮件)和Webservice(servlet)等Java微观世界。而大多数其他有关Java的书,并没有深入讨论这些问题,而且也没有探讨有关服务器端服务和JSP的内容。经典巨著,无须赘言。请继续读下去,愉快地阅读本书,轻松地编写程序!GeorgeNagy教授仁斯里尔理工学院美国纽约州特洛伊市2002年10月12日

图书目录

第1章 Java基本概念 1

1.1 Java的历史 1

1.2 什么是Java 2

1.3 Java模型与HTML模型的比较 3

1.4 小结 4

1.5 练习 4

第2章 原始数据类型 5

2.1 Java中的8种原始数据类型 5

2.2 有符号定点数据类型 7

2.3 简单算术表达式 7

2.4 原始数据类型的基本实例 8

2.5 原始数据类型转换 10

2.6 一些数学算法 10

2.7 小结 11

2.8 练习 11

第3章 运算符 13

3.1 优先级、结合性以及单目/二目运算符 13

3.2 具有最高优先级的运算符 20

3.3 增量与减量运算符 21

3.4 算术运算符 22

3.5 赋值运算符 23

3.6 运算符的句法规则 24

3.7 自测题 24

3.8 练习 30

第4章 基数换算 31

4.1 计数系统 31

4.2 通用计算机计数系统 32

4.3 从二进制、八进制和十六进制换算至十进制 33

4.4 由二进制换算至八进制和十六进制 33

4.5 由十进制换算为二进制、八进制和十六进制 33

4.6 小结 35

4.7 练习 36

第5章 控制结构 37

5.1 关系运算符 38

5.2 等于运算符 38

5.3 逻辑运算符 39

5.4 条件运算符 39

5.5 if语句 40

5.6 while和do语句 43

5.7 for语句 44

5.8 continue语句 45

5.9 break语句 46

5.10 switch语句 48

5.11 return语句 50

5.12 练习 51

第6章 引用数据类型 53

6.1 类的概念 53

6.2 构造函数 56

6.3 getter和setter方法 57

6.4 关键词null 58

6.5 子类和超类 59

6.6 casting 63

6.7 关键词 64

6.8 接口 65

6.9 以数据为中心同时面向对象的设计 70

6.10 脆弱的基类问题 71

6.11 小结 71

6.12 练习 72

第7章 静态、抽象及final修饰符 75

7.1 静态方法 75

7.2 静态变量 76

7.3 抽象类和方法 80

7.4 final修饰符和命名常量 83

7.5 final类和方法 84

7.6 单件模式 84

7.7 小结 85

7.8 练习 86

第8章 数组和向量 88

8.1 数组 88

8.2 向量 98

8.3 构建一辆购物手推车 101

8.4 堆栈 104

8.5 列表 105

8.6 队列 106

8.7 小结 107

8.8 练习 107

第9章 wrapper类和字符串 110

9.1 wrapper类 110

9.1.1 Boolean 111

9.1.2 Character 111

9.1.3 数值wrapper类 112

9.2 String 114

9.3 ReplaceString 117

9.4 StringTokenizer 118

9.5 CsvParser 119

9.6 迷宫程序(Maze Solver) 121

9.7 小结 124

9.8 练习 124

第10章 异常 127

10.1 第1个异常 127

10.2 监视输入或捕捉错误 128

10.3 定义自己的异常 129

10.4 检验异常与非检验异常 130

10.5 try语句的句法 131

10.6 throw语句 134

10.7 throws修饰符 135

10.8 System.err 136

10.9 公共安全和异常 136

10.10 小结 137

10.11 练习 138

第11章 包、导入以及可见性 139

11.1 包 139

11.2 导入语句 141

11.3 可见性修饰符 143

11.4 小结 145

11.5 练习 145

第12章 嵌套类和嵌套接口 146

12.1 成员内部类 147

12.2 LocalInnerClass 149

12.3 匿名内部类 150

12.4 嵌套静态类 154

12.5 嵌套接口 155

12.6 This关键词 157

12.7 小结 158

12.8 练习 159

第13章 线程 160

13.1 并发、多任务和多线程 160

13.2 建立新线程 163

13.3 线程状态 165

13.4 同步化方法和超量的啤酒 166

13.5 线程组 168

13.6 线程管理器 169

13.7 ThreadUtil 171

13.8 ThreadQueue 175

13.9 运行数以千计的线程 177

13.10 Job线程 178

13.11 小结 179

13.12 练习 180

第14章 文件 182

14.1 什么是文件 182

14.2 获取用户文件 183

14.2.1 Futil.getDirFile 183

14.2.2 Futil.getReadFile 183

14.2.3 Futil.getWriteFile 184

14.3 File类 184

14.3.1 File类概要 185

14.3.2 File类的使用 185

14.4 java.io.FilenameFilter接口 187

14.4.1 FilenameFilter接口概要 187

14.4.2 FilenameFilter接口的使用 188

14.4.3 DirFilter 188

14.4.4 FileFilter类 188

14.4.5 WildFilter类 190

14.5 Ls类 191

14.5.1 Ls.getWildNames 191

14.5.2 Ls.wildToConsole 192

14.5.3 Ls.getDirNames 192

14.5.4 Ls.deleteWildFiles 193

14.5.5 Ls.WordPrintMerge 193

14.6 DirList 194

14.7 小结 197

14.8 练习 197

第15章 流 198

15.1 FileInputStream类 199

15.1.1 FileInputStream类概要 199

15.1.2 FileInputStream类的使用 200

15.1.3 Futil.getFileInputStream 201

15.1.4 Futil.available 202

15.2 FileOutputStream类 203

15.2.1 FileOutputStream类概要 203

15.2.2 FileOutputStream类的使用 203

15.2.3 Futil.getFileOutputStream 206

15.2.4 Futil.close(OutputStream) 206

15.3 DataInputstream类 207

15.3.1 DataInputStream类概要 207

15.3.2 DataInputStream类的使用 208

15.4 DataOutputStream类 210

15.4.1 DataOutputStream类概要 210

15.4.2 DataOutputStream类的使用 211

15.5 StreamSniffer类 213

15.5.1 StreamSniffer类概要 218

15.5.2 StreamSniffer类的使用 219

15.6 序列化 220

15.7 读取和写入Float的GZIPed文件 223

15.8 小结 225

15.9 练习 225

第16章 读取程序 228

16.1 ReaderUtils 229

16.2 读取CSV文件 231

16.3 Cat.toConsole方法 235

16.4 Dos类 235

16.5 拨号 237

16.6 StreamTokenizer类 237

16.6.1 StreamTokenizer类概要 237

16.6.2 StreamTokenizer类的使用 238

16.6.3 Futil.readDataFile 240

16.6.4 Futil.writeFilteredHrefFile 241

16.7 futils.PolymorphicProcessor 243

16.8 小结 244

16.9 练习 245

第17章 Writer 248

17.1 获得输出文件名 249

17.2 SimpleWriter 251

17.3 HTML链接 252

17.4 Cat类 256

17.5 Futil.makeTocHtml 258

17.6 小结 260

17.7 练习 260

第18章 Swing介绍 262

18.1 历史观 262

18.2 Swing与AWT的关系 263

18.3 Screen类 264

18.4 重量级与轻量级 265

18.5 简单输入和输出 266

18.6 布局介绍 269

18.6.1 FlowLayout 269

18.6.2 GridLayout 271

18.6.3 BorderLayout 272

18.6.4 混合布局 273

18.6.5 面板、图文框和FlowLayout 274

18.6.6 自定义布局 275

18.7 从用户那里获取文件 281

18.7.1 Dialog类 281

18.7.2 FileDialog类 282

18.7.3 用Swing来获取文件 285

18.8 小结 286

18.9 练习 287

第19章 事件简介 290

19.1 ClosableJFrame 291

19.2 actionPerformed方法 295

19.3 RunButton 296

19.4 历史回顾 298

19.4.1 Observer接口 298

19.4.2 Observer与Observable类概要 299

19.5 NamedObservable 299

19.6 ObservableDouble 300

19.7 ObserverOfPoint3d 301

19.8 小结 302

19.9 练习 303

第20章 设计模式和事件 304

20.1 适配器模式和命令模式 304

20.2 命令模式和touchtone键区 305

20.3 RunTextField 306

20.4 BorderLayout和RunTextField 308

20.5 RunCheckBox 309

20.6 RunPasswordField 311

20.7 RunList 312

20.8 滚动条和滑块 314

20.8.1 RunScroll 314

20.8.2 RunSlider 315

20.9 RunRadio 316

20.10 RunRadioButton、ButtonGroup和FlowLayout 318

20.11 MainMenuBar和RunCheckBoxMenuItems 319

20.12 RunRadioButtonMenuItem组 321

20.13 MVC 设计模式 323

20.14 中间件设计模式 325

20.15 设计过程和JTabbedPane简述 327

20.16 小结 332

20.17 练习 332

第21章 在Swing中查看HTML 337

21.1 HtmlViewer 337

21.2 HtmlSynthesizer 339

21.3 小结 347

21.4 练习 347

第22章 使用键盘 349

22.1 获取键事件信息 349

22.2 键修饰符编程 351

22.3 向TouchTone添加键事件 352

22.4 Mnemonics和RunMenuItem 353

22.5 MnemonicMenu 355

22.6 小结 356

22.7 练习 356

第23章 鼠标输入 358

23.1 MouseController 358

23.2 键事件和鼠标事件的结合 360

23.3 通过MouseComponentMover来移动和改变组件大小 363

23.4 MoveLabel 365

23.5 小结 367

23.6 练习 367

第24章 反射 368

24.1 ReflectUtil获取实例信息 368

24.2 打印类名 370

24.3 打印Objects println(Object o[])数组 371

24.4 带有N个参数的方法 371

24.5 getter方法 372

24.6 setter方法 373

24.7 将String转换为方法 374

24.8 从String调用方法 375

24.9 使用反射的命令行解释器 376

24.10 ReflectUtil.java 377

24.11 小结 381

24.12 练习 382

第25章 自动消息转发 384

25.1 引言 384

25.2 委派与多重继承 388

25.3 相关工作 393

25.4 一个真实的例子 394

25.5 DelegateSynthesizer 395

25.5.1 DelegateSynthesizer实现 397

25.5.2 DelegateSynthesizer 399

25.6 小结 406

25.7 练习 408

第26章 绘图简介 409

26.1 Graphics类 410

26.1.1 Graphics类概述 411

26.1.2 Graphics类的方法 412

26.1.3 Radar类 416

26.2 Spiral组件 418

26.2.1 Spiral类 419

26.2.2 阿基米德螺旋形 419

26.2.3 Fermat的SpiralComponent类 421

26.3 Poor Man线程和damage control功能 423

26.4 小结 424

26.5 练习 424

第27章 具有色彩和图像的商业图形 426

27.1 Color类 426

27.1.1 Color类概要 426

27.1.2 Color类的使用 427

27.1.3 添加色彩至Radar 430

27.1.4 创建颜色表 431

27.1.5 色彩网格 432

27.2 FontMetrics类 435

27.2.1 FontMetrics类概要 436

27.2.2 FontMetrics类的使用 436

27.2.3 绘制具有背景的字符串 437

27.2.4 使用Target类绘制垂直字符串 438

27.3 图表 439

27.3.1 LineGraph类 439

27.3.2 BarGraph类 440

27.3.3 PieGraph类 441

27.4 图像 442

27.4.1 ImageUtils类 443

27.4.2 ImageFrame类 445

27.4.3 WriteGIF类 448

27.5 ImagePanel类 449

27.6 小结 451

27.7 练习 451

第28章 JDBC 454

28.1 JDBC的概念 454

28.2 多层计算模型 454

28.3 Javasoft框架 455

28.4 打开到RDBMS的连接 456

28.5 建立SQL语句实例 457

28.6 DatabaseWriter 458

28.7 ResultSetMetaData 459

28.8 DataBaseMetaData 461

28.9 编写SQLBean 462

28.10 小结 467

28.11 练习 468

第29章 网络编程 469

29.1 OSI参考模型 469

29.2 客户端-服务器范例 471

29.3 域名映射 471

29.4 套接字和端口 473

29.4.1 创建原子钟读取第1个套接字 475

29.4.2 为建立Web服务器而服务的第1个套接字 476

29.4.3 使用套接字通过SMTP发送电子邮件 480

29.4.4 使用套接字传输实例 483

29.4.5 计算服务器 486

29.4.6 解决类配置问题 489

29.5 建立报价客户端读取第1个URL 492

29.6 建立浏览器读取一个URL 494

29.7 防火墙问题 496

29.8 小结 498

29.9 练习 498

第30章 servlet 502

30.1 第1个servlet 503

30.2 解码EchoEnvironmentServlet 505

30.3 GuestBook和3级编程模式 507

30.4 SQL和Execute类 513

30.5 服务器端图形 514

30.6 Get/Post和RequestUtil类 517

30.7 cookie和会话 518

30.7.1 cookie和servlet API 519

30.7.2 会话管理 521

30.8 练习 522

第31章 JSP 524

31.1 什么是JSP 524

31.2 JSP与其他编程工具的比较 525

31.3 如何使用JSP 526

31.4 cookie计数器、注释和页面导入 527

31.5 查找JSP中的Header 529

31.6 使用JSP发送邮件 532

31.7 多媒体服务器页 534

31.8 MSP中的图形 535

31.9 构建一个元搜索引擎 536

31.10 构建一个快捷的脱机元搜索引擎 538

31.11 构建一辆具有会话Bean的购物车 542

31.12 小结 544

31.13 练习 544

第32章 XML 545

32.1 什么是XML 545

32.2 为什么使用XML 546

32.3 如何安装XML库 546

32.4 如何定义自己的XML 547

32.5 Xml2Cart 549

32.6 Csv2XML 554

32.7 XML显示 560

32.8 我们应该把RDBMS转换成XML吗 561

32.9 XML的问题和局限性 561

32.10 小结 562

32.11 练习 562

第33章 更多的XML技术 564

33.1 XML的发展 564

33.2 SAX和DOM模型 564

33.3 JAXP的装配位置 565

33.4 使用JAXP构建一个DOM Level 2 565

33.5 XML命名空间 571

33.6 XML schema 572

33.7 XSLT 577

33.8 小结 587

33.9 练习 588

第34章 bean属性 590

34.1 代码重用问题的历史 590

34.2 组件 590

34.3 bean 591

34.4 事件 591

34.5 属性 591

34.6 InverterGate示例 592

34.7 InverterGate类 595

34.8 InverterGate类的代码 596

34.9 控制台窗口输出 596

34.10 小结 597

34.11 练习 598

第35章 内省 599

35.1 内省的历史 599

35.2 什么是内省 599

35.3 BeanInfo 600

35.4 SimpleBeanInfo 601

35.5 命名惯例 601

35.6 IntrospectionException 602

35.7 小结 602

35.8 练习 603

第36章 FeatureDescriptor 604

36.1 什么是FeatureDescriptor 604

36.2 FeatureDescriptor详述 606

36.3 BeanDescriptor 607

36.4 EventSetDescriptor 609

36.5 MethodDescriptor 612

36.6 ParameterDescriptor 615

36.7 PropertyDescriptor 615

36.8 IndexedPropertyDescriptor 618

36.9 BeanInfo示例 618

36.10 小结 619

36.11 练习 620

第37章 Enterprise Java Bean简介 621

37.1 EJB和服务器端架构 621

37.2 对企业级服务器端架构的需求 622

37.2.1 对组件开发的支持 622

37.2.2 伸缩性 623

37.2.3 可移植性 623

37.3 多层应用程序 624

37.4 竞争架构 625

37.5 资源 625

37.6 小结 626

37.7 练习 626

第38章 EJB容器 627

38.1 简介 627

38.2 对J2EE兼容的EJB容器的要求 627

38.3 企业bean的编程限制 631

38.4 EJB应用程序的4个组件 632

38.4.1 业务逻辑:EJB类 632

38.4.2 部署描述符 633

38.5 使用接口 633

38.5.1 EJB函数调用序列 634

38.5.2 EJB应用程序服务器 635

38.6 小结 636

38.7 练习 636

第39章 会话bean 637

39.1 简介 637

39.2 无状态会话bean 638

39.3 有状态会话bean 639

39.4 如何编写会话bean 639

39.4.1 如何从客户端连接一个EJB 641

39.4.2 示例 641

39.4.3 编写应用程序 642

39.4.4 JNDI 646

39.4.5 本地接口 647

39.5 小结 648

39.6 练习 648

第40章 部署会话bean 649

40.1 简介 649

40.2 部署EJB 649

40.3 启动服务器 650

40.4 创建一个应用程序 651

40.5 添加应用程序客户端 656

40.6 部署应用程序 658

40.7 运行客户端 659

40.8 在JSP中运行EJB 661

40.8.1 编码JSP 661

40.8.2 部署JSP 662

40.9 小结 663

40.10 练习 664

第41章 实体bean 665

41.1 简介 665

41.2 设计考虑 665

41.3 实体bean的结构 666

41.4 home接口 666

41.4.1 由容器管理的持久性 670

41.4.2 由bean管理的持久性 670

41.5 小结 673

41.6 练习 674

第42章 EJB安全 675

42.1 简介 675

42.2 安全准则 677

42.3 企业应用程序安全 678

42.4 EJB安全API 679

42.5 小结 680

42.6 练习 680

第43章 RMI 681

43.1 简介 681

43.2 RMI体系结构 682

43.3 RMI封送处理 682

43.4 打包现有的Java类 686

43.5 EJB和RMI/IIOP 687

43.6 小结 688

43.7 练习 689

第44章 参考文献 690

附录A 句法 704

A.1 句法简介 704

A.2 保留词 708

A.3 小结 709

附录B 关于Java的辩论 710

B.1 简介 710

B.2 Java语言 710

B.2.1 Java是面向对象的 711

B.2.2 Java拥有与Simula相似的类 712

B.2.3 重载运算符 712

B.3 多重继承 713

B.4 数组可以是C风格或Java风格的 714

B.5 平台独立性:经常性地编译 714

B.6 支持多媒体的新API 715

B.7 虚拟机 715

B.8 Javadoc 716

B.9 性能 716

B.10 配置 717

B.11 其他语言 717

B.12 小结 718

B.13 致谢 718

附录C 如何设置Java系统环境 719

C.1 在UNIX下运行Java 719

C.2 在Windows下运行Java 721

C.2.1 设置类路径 721

C.2.2 环境空间不足 722

C.3 Metrowerks IDE用法 722

C.3.1 生成一个新项目 723

C.3.2 更改target类 724

C.3.3 如何在Java中添加一个文件 725

C.3.4 如何编辑XML和其他数据格式 727

C.4 IntelliJ用法 727

C.5 小结 730

C.6 练习 730

附录D 编码类型 732

D.1 命名规范 732

D.1.1 方法名、包名和变量名 732

D.1.2 常量名称 733

D.1.3 类名和接口名 733

D.1.4 可见性 733

D.2 避免不明确的变量名称 734

D.3 避免阴影变量 734

D.4 格式 735

D.5 组织 736

D.6 小结 738

附录E 学习使用Javadoc 739

E.1 Javadoc简介 739

E.2 Javadoc标签 740

E.2.1 @author标签(自JDK 1.0版) 740

E.2.2 {@docRoot}标签(自JDK 1.3版) 740

E.2.3 @deprecated标签(自JDK 1.0版) 740

E.2.4 @exception标签(自JDK 1.0版) 741

E.2.5 @param标签(自JDK 1.0版) 741

E.2.6 @return标签(自JDK 1.0版) 741

E.2.7 @see标签(自JDK 1.0版,在JDK 1.2版中出现问题,在JDK 1.2.2版中获得修复) 741

E.2.8 @since标签(自JDK 1.1版) 742

E.2.9 @throws标签(自JDK 1.2版) 742

E.2.10 @version标签(自JDK 1.0版) 742

E.2.11 {@link}标签(自JDK 1.2版) 742

E.3 通用HTML标签 743

E.4 如何在CodeWarrior中运行Javadoc 743

E.5 如何使用JDK运行Javadoc 745

E.6 小结 747

E.7 练习 747

附录F 面向对象的设计和文档 750

F.1 3种文档 750

F.2 软件设计师 751

F.3 面向对象设计 751

F.4 过程化设计 754

F.5 流程图 757

F.6 组合过程化和面向对象的设计 758

F.7 软件生命周期模型 759

F.8 小结 762

F.9 练习 762

附录G UML:面向对象设计的通用语言 764

G.1 UML简介 764

G.2 静态特性和动态特性 765

G.3 用户需求 765

G.4 用例图 765

G.5 对象图 766

G.6 类图 767

G.7 协作图 768

G.8 顺序图 769

G.9 状态图 770

G.10 小结 771

G.11 练习 772

附录H 设置JDBC 773

H.1 打开一个到RDBMS的连接 773

H.2 在Windows中设置一个数据源名称 774

H.3 使用MySQL 779

H.4 使用ORACLE 783

H.4.1 在Windows 98/NT上安装ORACLE JDBC驱动程序 783

H.4.2 设置CodeWarrior 784

H.5 小结 784

附录I 设置servlet 785

I.1 设置一个servlet引擎 785

I.2 设置Tomcat 786

I.3 设置JSWDK 788

附录J 位运算符 791

J.1 补运算符 792

J.2 与、或以及异或运算符 792

J.3 移位运算符 793

J.4 小结 796

J.5 练习 796

附录K 集合 799

K.1 集合框架接口 799

K.2 集合接口 799

K.2.1 Set接口 800

K.2.2 List接口 801

K.2.3 Map接口 801

K.2.4 Iterator、ListIterator和Enumeration接口 802

K.3 集合实现 803

K.3.1 HashSet方法 804

K.3.2 惟一性意味着覆盖hashcode和equals方法 804

K.3.3 使用getClass代替instanceof 807

K.3.4 TreeSet类 808

K.3.5 自然排序 808

K.3.6 全序排序 810

K.3.7 ArrayList类 813

K.3.8 LinkedList类 816

K.3.9 HashMap类 817

K.3.10 散列法 820

K.3.11 TreeMap类 824

K.3.12 Collection类 826

K.4 小结 827

K.5 练习 828

术语表 830