第1章 Java基本概念 1
1.1 Java的历史 1
目录 1
1.2 什么是Java 2
1.3 Java模型与HTML模型的比较 3
1.5 练习 4
1.4 小结 4
2.1 Java中的8种原始数据类型 5
第2章 原始数据类型 5
2.3 简单算术表达式 7
2.2 有符号定点数据类型 7
2.4 原始数据类型的基本实例 8
2.6 一些数学算法 10
2.5 原始数据类型转换 10
2.8 练习 11
2.7 小结 11
3.1 优先级、结合性以及单目/二目运算符 13
第3章 运算符 13
3.2 具有最高优先级的运算符 20
3.3 增量与减量运算符 21
3.4 算术运算符 22
3.5 赋值运算符 23
3.7 自测题 24
3.6 运算符的句法规则 24
3.8 练习 30
4.1 计数系统 31
第4章 基数换算 31
4.2 通用计算机计数系统 32
4.5 由十进制换算为二进制、八进制和十六进制 33
4.4 由二进制换算至八进制和十六进制 33
4.3 从二进制、八进制和十六进制换算至十进制 33
4.6 小结 35
4.7 练习 36
第5章 控制结构 37
5.2 等于运算符 38
5.1 关系运算符 38
5.4 条件运算符 39
5.3 逻辑运算符 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.1 类的概念 53
第6章 引用数据类型 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.11 小结 71
6.10 脆弱的基类问题 71
6.12 练习 72
7.1 静态方法 75
第7章 静态、抽象及final修饰符 75
7.2 静态变量 76
7.3 抽象类和方法 80
7.4 final修饰符和命名常量 83
7.6 单件模式 84
7.5 final类和方法 84
7.7 小结 85
7.8 练习 86
8.1 数组 88
第8章 数组和向量 88
8.2 向量 98
8.3 构建一辆购物手推车 101
8.4 堆栈 104
8.5 列表 105
8.6 队列 106
8.8 练习 107
8.7 小结 107
9.1 wrapper类 110
第9章 wrapper类和字符串 110
9.1.2 Character 111
9.1.1 Boolean 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.8 练习 124
9.7 小结 124
10.1 第1个异常 127
第10章 异常 127
10.2 监视输入或捕捉错误 128
10.3 定义自己的异常 129
10.4 检验异常与非检验异常 130
10.5 try语句的句法 131
10.6 throw语句 134
10.7 throws修饰符 135
10.9 公共安全和异常 136
10.8 System.err 136
10.10 小结 137
10.11 练习 138
11.1 包 139
第11章 包、导入以及可见性 139
11.2 导入语句 141
11.3 可见性修饰符 143
11.5 练习 145
11.4 小结 145
第12章 嵌套类和嵌套接口 146
12.1 成员内部类 147
12.2 LocalInnerClass 149
12.3 匿名内部类 150
12.4 嵌套静态类 154
12.5 嵌套接口 155
1 2.6 This关键词 157
12.7 小结 158
12.8 练习 159
13.1 并发、多任务和多线程 160
第13章 线程 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.1 什么是文件 182
第14章 文件 182
14.2.2 Futil.getReadFile 183
14.2.1 Futil.getDirFile 183
14.2 获取用户文件 183
14.3 File类 184
14.2.3 Futil.getWriteFile 184
14.3.2 File类的使用 185
14.3.1 File类概要 185
14.4.1 FilenameFilter接口概要 187
14.4 java.io.FilenameFilter接口 187
14.4.4 FileFilter类 188
14.4.3 DirFilter 188
14.4.2 FilenameFilter接口的使用 188
14.4.5 WildFilter类 190
14.5.1 Ls.getWildNames 191
14.5 Ls类 191
14.5.3 Ls.getDirNames 192
14.5.2 Ls.wildToConsole 192
14.5.5 Ls.WordPrintMerge 193
14.5.4 Ls.delete WildFiles 193
14.6 DirList 194
14.8 练习 197
14.7 小结 197
第15章 流 198
15.1.1 FileInputStream类概要 199
15.1 FileInputStream类 199
15.1.2 FileInputStream类的使用 200
15.1.3 Futil.getFileInputStream 201
15.1.4 Futil.available 202
15.2.2 FileOutputStream类的使用 203
15.2.1 FileOutputStream类概要 203
15.2 FileOutputStream类 203
15.2.4 Futil.close(OutputStream) 206
15.2.3 Futil.getFileOutputStream 206
15.3.1 DataInputStream类概要 207
15.3 DataInputstream类 207
15.3.2 DataInputStream类的使用 208
15.4.1 DataOutputStream类概要 210
15.4 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.9 练习 225
15.8 小结 225
第16章 读取程序 228
16.1 ReaderUtils 229
16.2 读取CSV文件 231
16.4 Dos类 235
16.3 Cat.toConsole方法 235
16.6.1 StreamTokenizer类概要 237
16.6 StreamTokenizer类 237
16.5 拨号 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.7 练习 260
17.6 小结 260
18.1 历史观 262
第18章 Swing介绍 262
18.2 Swing与AWT的关系 263
18.3 Screen类 264
18.4 重量级与轻量级 265
18.5 简单输入和输出 266
18.6.1 FlowLayout 269
18.6 布局介绍 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.1 Dialog类 281
18.7 从用户那里获取文件 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.1 Observer接口 298
19.4 历史回顾 298
19.5 NamedObservable 299
19.4.2 Observer与Observable类概要 299
19.6 ObservableDouble 300
19.7 ObserverOfPoint3d 301
19.8 小结 302
19.9 练习 303
20.1 适配器模式和命令模式 304
第20章 设计模式和事件 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.1 RunScroll 314
20.8 滚动条和滑块 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.17 练习 332
20.16 小结 332
21.1 HtmlViewer 337
第21章 在Swing中查看HTML 337
21.2 HtmlSynthesizer 339
21.4 练习 347
21.3 小结 347
22.1 获取键事件信息 349
第22章 使用键盘 349
22.2 键修饰符编程 351
22.3 向TouchTone添加键事件 352
22.4 Mnemonics和RunMenuItem 353
22.5 MnemonicMenu 355
22.7 练习 356
22.6 小结 356
23.1 MouseController 358
第23章 鼠标输入 358
23.2 键事件和鼠标事件的结合 360
23.3 通过MouseComponentMover来移动和改变组件大小 363
23.4 MoveLabel 365
23.6 练习 367
23.5 小结 367
24.1 ReflectUtil获取实例信息 368
第24章 反射 368
24.2 打印类名 370
24.4 带有N个参数的方法 371
24.3 打印Objects println(Object o[])数组 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.1 引言 384
第25章 自动消息转发 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.2 阿基米德螺旋形 419
26.2.1 Spiral类 419
26.2.3 Fermat的SpiralComponent类 421
26.3 Poor Man线程和damage control功能 423
26.5 练习 424
26.4 小结 424
27.1.1 Color类概要 426
27.1 Color类 426
第27章 具有色彩和图像的商业图形 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.2 FontMetrics类的使用 436
27.2.1 FontMetrics类概要 436
27.2.3 绘制具有背景的字符串 437
27.2.4 使用Target类绘制垂直字符串 438
27.3.1 LineGraph类 439
27.3 图表 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.7 练习 451
27.6 小结 451
28.2 多层计算模型 454
28.1 JDBC的概念 454
第28章 JDBC 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.1 OSI参考模型 469
第29章 网络编程 469
29.3 域名映射 471
29.2 客户端-服务器范例 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.9 练习 498
29.8 小结 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.1 什么是JSP 524
第31章 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.13 练习 544
31.12 小结 544
32.1 什么是XML 545
第32章 XML 545
32.3 如何安装XML库 546
32.2 为什么使用XML 546
32.4 如何定义自己的XML 547
32.5 Xml2Cart 549
32.6 Csv2XML 554
32.7 XML显示 560
32.9 XML的问题和局限性 561
32.8 我们应该把RDBMS转换成XML吗 561
32.11 练习 562
32.10 小结 562
33.2 SAX和DOM模型 564
33.1 XML的发展 564
第33章 更多的XML技术 564
33.4 使用JAXP构建一个DOM Level 2 565
33.3 JAXP的装配位置 565
33.5 XML命名空间 571
33.6 XML schema 572
33.7 XSLT 577
33.8 小结 587
33.9 练习 588
34.2 组件 590
34.1 代码重用问题的历史 590
第34章 bean属性 590
34.5 属性 591
34.4 事件 591
34.3 bean 591
34.6 InverterGate示例 592
34.7 InverterGate类 595
34.9 控制台窗口输出 596
34.8 InverterGate类的代码 596
34.10 小结 597
34.11 练习 598
35.2 什么是内省 599
35.1 内省的历史 599
第35章 内省 599
35.3 BeanInfo 600
35.5 命名惯例 601
35.4 SimpleBeanInfo 601
35.7 小结 602
35.6 IntrospectionException 602
35.8 练习 603
36.1 什么是FeatureDescriptor 604
第36章 FeatureDescriptor 604
36.2 FeatureDescriptor详述 606
36.3 BeanDescriptor 607
36.4 EventSetDescriptor 609
36.5 MethodDescriptor 612
36.7 PropertyDescriptor 615
36.6 ParameterDescriptor 615
36.9 BeanInfo示例 618
36.8 IndexedPropertyDescriptor 618
36.10 小结 619
36.11 练习 620
37.1 EJB和服务器端架构 621
第37章 Enterprise Java Bean简介 621
37.2.1 对组件开发的支持 622
37.2 对企业级服务器端架构的需求 622
37.2.3 可移植性 623
37.2.2 伸缩性 623
37.3 多层应用程序 624
37.5 资源 625
37.4 竞争架构 625
37.7 练习 626
37.6 小结 626
38.2 对J2EE兼容的EJB容器的要求 627
38.1 简介 627
第38章 EJB容器 627
38.3 企业bean的编程限制 631
38.4.1 业务逻辑:EJB类 632
38.4 EJB应用程序的4个组件 632
38.5 使用接口 633
38.4.2 部署描述符 633
38.5.1 EJB函数调用序列 634
38.5.2 EJB应用程序服务器 635
38.7 练习 636
38.6 小结 636
39.1 简介 637
第39章 会话bean 637
39.2 无状态会话bean 638
39.4 如何编写会话bean 639
39.3 有状态会话bean 639
39.4.2 示例 641
39.4.1 如何从客户端连接一个EJB 641
39.4.3 编写应用程序 642
39.4.4 JNDI 646
39.4.5 本地接口 647
39.6 练习 648
39.5 小结 648
40.2 部署EJB 649
40.1 简介 649
第40章 部署会话bean 649
40.3 启动服务器 650
40.4 创建一个应用程序 651
40.5 添加应用程序客户端 656
40.6 部署应用程序 658
40.7 运行客户端 659
40.8.1 编码JSP 661
40.8 在JSP中运行EJB 661
40.8.2 部署JSP 662
40.9 小结 663
40.10 练习 664
41.2 设计考虑 665
41.1 简介 665
第41章 实体bean 665
41.4 home接口 666
41.3 实体bean的结构 666
41.4.2 由bean管理的持久性 670
41.4.1 由容器管理的持久性 670
41.5 小结 673
41.6 练习 674
42.1 简介 675
第42章 EJB安全 675
42.2 安全准则 677
42.3 企业应用程序安全 678
42.4 EJB安全API 679
42.6 练习 680
42.5 小结 680
43.1 简介 681
第43章 RMI 681
43.3 RMI封送处理 682
43.2 RMI体系结构 682
43.4 打包现有的Java类 686
43.5 EJB和RMI/IIOP 687
43.6 小结 688
43.7 练习 689
第44章 参考文献 690
A.1 句法简介 704
附录A 句法 704
A.2 保留词 708
A.3 小结 709
B.2 Java语言 710
B.1 简介 710
附录B 关于Java的辩论 710
B.2.1 Java是面向对象的 711
B.2.3 重载运算符 712
B.2.2 Java拥有与Simula相似的类 712
B.3 多重继承 713
B.5 平台独立性:经常性地编译 714
B.4 数组可以是C风格或Java风格的 714
B.7 虚拟机 715
B.6 支持多媒体的新API 715
B.9 性能 716
B.8 Javadoc 716
B.11 其他语言 717
B.10 配置 717
B.13 致谢 718
B.12 小结 718
C.1 在UNIX下运行Java 719
附录C 如何设置Java系统环境 719
C.2.1 设置类路径 721
C.2 在Windows下运行Java 721
C.3 Metrowerks IDE用法 722
C2.2 环境空间不足 722
C.3.1 生成一个新项目 723
C.3.2 更改target类 724
C.3.3 如何在Java中添加一个文件 725
C.4 IntelliJ用法 727
C.3.4 如何编辑XML和其他数据格式 727
C.6 练习 730
C.5 小结 730
D.1.1 方法名、包名和变量名 732
D.1 命名规范 732
附录D 编码类型 732
D.1.4 可见性 733
D.1.3 类名和接口名 733
D.1.2 常量名称 733
D.3 避免阴影变量 734
D.2 避免不明确的变量名称 734
D.4 格式 735
D.5 组织 736
D.6 小结 738
E.1 Javadoc简介 739
附录E 学习使用Javadoc 739
E.2.3 @deprecated标签(自JDK 1.0版) 740
E.2.2 {@docRoot}标签(自JDK 1.3版) 740
E.2 Javadoc标签 740
E.2.1 @author标签(自JDK 1.0版) 740
E.2.7 @see标签(自JDK 1.0版,在JDK 1.2版中出现问题,在JDK 1.2.2版中获得修复) 741
E.2.6 @return标签(自JDK 1.0版) 741
E.2.4 @exception标签(自JDK 1.0版) 741
E.2.5 @param标签(自JDK 1.0版) 741
E.2.11 {@link}标签(自JDK 1.2版) 742
E.2.10 @version标签(自JDK 1.0版) 742
E.2.8 @since标签(自JDK 1.1版) 742
E.2.9 @throws标签(自JDK 1.2版) 742
E.4 如何在CodeWarrior中运行Javadoc 743
E.3 通用HTML标签 743
E.5 如何使用JDK运行Javadoc 745
E.7 练习 747
E.6 小结 747
F.1 3种文档 750
附录F 面向对象的设计和文档 750
F.3 面向对象设计 751
F.2 软件设计师 751
F.4 过程化设计 754
F.5 流程图 757
F.6 组合过程化和面向对象的设计 758
F.7 软件生命周期模型 759
F.9 练习 762
F.8 小结 762
G.1 UML简介 764
附录G UML:面向对象设计的通用语言 764
G.4 用例图 765
G.3 用户需求 765
G.2 静态特性和动态特性 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.1 设置一个servlet引擎 785
附录I 设置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.1 集合框架接口 799
K.2 集合接口 799
附录K 集合 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