第1章 基本介绍 1
1.1简介 1
1.2对象技术介绍 2
1.3开源软件 4
1.4 Java和典型的Java开发环境 5
1.5测试驱动的Java程序 8
1.6 Web2.0:走向社会 11
1.7软件技术 13
1.8跟踪最新的信息技术 14
1.9小结 15
第2章Java程序入门 16
2.1简介 16
2.2第一个Java程序:输出一行文本 16
2.3修改第一个Java程序 20
2.4用printf显示文本 21
2.5另一个Java程序:整数相加 22
2.6算术运算符 25
2.7判断:相等运算符和关系运算符 26
2.8小结 28
第3章类,对象,方法和字符串简介 29
3.1简介 29
3.2声明带方法的类并实例化类的对象 29
3.3声明带参数的方法 32
3.4实例变量、set方法和get方法 34
3.5基本类型与引用类型的比较 38
3.6用构造方法初始化对象 39
3.7浮点数与double类型 41
3.8小结 44
第4章 控制语句(1) 45
4.1简介 45
4.2控制结构 45
4.3 if单选择语句 47
4.4 if…else双选择语句 48
4.5 while循环语句 50
4.6计数器控制循环 51
4.7标记控制循环 54
4.8嵌套控制语句 58
4.9复合赋值运算符 60
4.10增量运算符和减量运算符 60
4.11基本类型 62
4.12小结 63
第5章 控制语句(2) 64
5.1简介 64
5.2计数器控制循环的实质 64
5.3 for循环语句 65
5.4使用for语句的例子 68
5.5 do…while循环语句 71
5.6 switch多选择语句 72
5.7 break和continue语句 78
5.8逻辑运算符 80
5.9小结 84
第6章 方法:深入探究 85
6.1简介 85
6.2 Java中的程序模块 86
6.3静态方法,静态字段和Math类 86
6.4声明多参数方法 87
6.5关于方法声明与使用的说明 90
6.6实参提升与强制转换 91
6.7 Java API包 91
6.8案例研究:随机数生成方法 92
6.9案例研究:机会游戏(引入枚举) 96
6.10声明的作用域 100
6.11方法重载 101
6.12小结 103
第7章 数组和ArrayList 104
7.1简介 104
7.2数组 105
7.3声明和创建数组 106
7.4数组使用举例 107
7.5案例研究:洗牌与发牌模拟 113
7.6强化for语句 116
7.7将数组传递给方法 117
7.8案例研究:GradeBook类用数组保存成绩 120
7.9多维数组 123
7.10案例研究:使用二维数组的GradeBook类 126
7.11变长实参表 130
7.12使用命令行实参 131
7.13 Arrays类 132
7.14集合和ArrayList类简介 134
7.15小结 136
第8章 类与对象:深入探究 137
8.1简介 137
8.2 Time类案例研究 138
8.3控制对成员的访问 141
8.4用this引用访问当前对象的成员 141
8.5 Time类案例研究:重载构造方法 143
8.6默认构造方法与无实参构造方法 147
8.7关于set方法和get方法 148
8.8组合 148
8.9枚举 151
8.10内存回收与finalize方法 152
8.11静态类成员 153
8.12静态导入 156
8.13 final实例变量 157
8.14 Time类案例研究:创建包 157
8.15包访问 161
8.16小结 162
第9章 面向对象编程:继承 164
9.1简介 164
9.2超类与子类 165
9.3 protected成员 166
9.4超类与子类的关系 167
9.5子类的构造方法 182
9.6继承与软件工程 183
9.7 Object类 184
9.8小结 184
第10章 面向对象编程:多态 185
10.1简介 186
10.2多态举例 187
10.3演示多态行为 187
10.4抽象类和抽象方法 189
10.5案例研究:使用多态的工资系统 191
10.6 final方法和final类 202
10.7案例研究:创建和使用接口 202
10.8小结 210
11.1简介 211
第11章 异常处理:深入探究 211
11.2例子:除数为0不用异常处理 212
11.3例子:处理ArithmeticException异常和InputMismatchException异常 213
11.4何时使用异常处理 217
11.5 Java异常层次 217
11.6 finally语句块 219
11.7栈解退和从异常对象获得信息 222
11.8链式异常 225
11.9声明新的异常类型 226
11.10前置条件和后置条件 227
11.11断言 227
11.12(Java SE 7新增)多重catch:在一个catch中处理多个异常 228
11.13 (Java SE 7新增)带资源的try语句:自动资源去配 228
11.14小结 229
第12章ATM案例研究(1):面向对象设计和UML 230
12.1案例研究简介 230
12.2检查需求文档 231
12.3确定需求文档中的类 236
12.4确定类属性 241
12.5确定对象的状态和活动 244
12.6确定类操作 246
12.7确定对象之间的协作 251
12.8小结 255
第13章ATM案例研究(2):实现面向对象设计 259
13.1简介 259
13.2开始编程ATM系统的类 260
13.3在ATM系统中加入继承和多态 263
13.4 ATM案例研究的实现 267
13.5小结 284
第14章GUI组件(1) 286
14.1简介 286
14.2 Java中新的Nimbus外观 287
14.3基于简单GUI的输入/输出与JOptionPane 288
14.4 Swing组件概述 290
14.5在窗口中显示文本和图像 291
14.6文本域与带嵌套类的事件处理介绍 295
14.7常见的GUI事件类型与监听器接口 299
14.8如何进行事件处理 300
14.9 JButton 301
14.10维护状态的按钮 304
14.11 JComboBox与用于事件处理的匿名内部类 308
14.12 JList 311
14.13多选择列表 313
14.14鼠标事件处理 315
14.15适配器类 318
14.16用于鼠标绘制的Jpanel子类 320
14.17键盘事件的处理 323
14.18布局管理器介绍 325
14.19使用面板管理更复杂的布局 331
14.20 JTextArea 333
14.21小结 335
第15章 图形与Java 2D 336
15.1简介 336
15.2图形环境与图形对象 338
15.3颜色控制 338
15.4字体操作 343
15.5画线、矩形和椭圆 347
15.6 画弧 349
15.7画多边形和折线 351
15.8 Java 2D API 353
15.9小结 358
第16章 字符串,字符和正则表达式 359
16.1简介 360
16.2字符和字符串基础 360
16.3 String类 360
16.4 StringBuilder类 370
16.5 Character类 375
16.6标记化String 378
16.7正则表达式,Pattern类和Matcher类 379
16.8小结 385
第17章 文件,流和对象序列化 386
17.1简介 386
17.2文件和流 387
17.3 File类 388
17.4顺序访问文本文件 391
17.5对象序列化 402
17.6其他的java.io类 409
17.7用JFileChooser打开文件 411
17.8小结 413
第18章 泛型集合 414
18.1简介 414
18.2集合概述 415
18.3基本类型的类型包装器类 415
18.4自动装箱和自动拆箱 415
18.5 Collection接口和Collections类 416
18.6列表 417
18.7集合方法 423
18.8 java.util包的Stack类 431
18.9 PriorityQueue类和Queue接口 433
18.10集合 434
18.11映射 435
18.12 Properties类 438
18.13同步集合 440
18.14不可修改集合 441
18.15抽象实现 441
18.16小结 442
第19章 泛型类和泛型方法 443
19.1简介 443
19.2泛型方法的由来 444
19.3泛型方法:实现和编译时翻译 445
19.4其他的编译时翻译问题:将类型参数用作返回类型的方法 447
19.5重载泛型方法 450
19.6泛型类 450
19.7原始类型 456
19.8接收类型参数的方法中的通配符 459
19.9关于泛型与继承的说明 462
19.10小结 462
第20章applet与Java Web Start 463
20.1简介 463
20.2 JDK提供的applet样本 464
20.3简单的Java applet:绘制一个字符串 467
20.4 applet的几个生命周期方法 470
20.5用init方法初始化 471
20.6沙箱安全模型 472
20.7 Java Web Start与JNLP 473
20.8小结 477
第21章 多媒体:applet与程序 478
21.1简介 478
21.2加载,显示和缩放图像 479
21.3用图像序列产生动画 483
21.4映射图 488
21.5加载并播放音频片段 490
21.6用Java媒体框架播放视频和其他媒体 493
21.7小结 496
21.8 Web资源 496
第22章GUI组件(2) 497
22.1简介 497
22.2 JSlider 498
22.3关于窗口的更多说明 500
22.4在框架中使用菜单 501
22.5 JPopupMenu 507
22.6可插入外观 509
22.7 JDesktopPane和JInternalFrame 512
22.8 JTabbedPane 514
22.9布局管理器:BoxLayout和GridBagLayout 516
22.10小结 525
第23章 多线程编程 526
23.1简介 526
23.2线程状态:线程的生命周期 528
18.3线程优先级与线程调度 529
23.3用Executor框架创建并执行线程 530
23.4线程同步 533
23.5没有同步的生产者/消费者关系 539
23.6生产者/消费者关系:ArrayBlockingQueue 544
23.7同步的生产者/消费者关系 546
23.8生产者/消费者关系:有界缓冲区 551
23.9生产者/消费者关系:Lock接口和Condition接口 556
23.10并发集合概述 561
23.11 GUI的多线程 562
23.12 Callable接口和Future接口 572
23.13 Java SE 7:Fork/Join框架 572
23.14小结 573
第24章 网络编程 574
24.1简介 574
24.2操作URL 575
24.3读取Web服务器上的文件 579
24.4用流套接字建立简单的服务器 581
24.5用流套接字建立简单的客户端 582
24.6流套接字连接与客户/服务器交互 583
24.7数据报:无连接的客户/服务器交互 591
24.8使用多线程服务器的客户/服务器一字棋游戏 597
24.9(线上)案例研究:DeitelMessenger 607
24.10小结 607
第25章用JDBC访问数据库 608
25.1简介 609
25.2关系数据库 609
25.3关系数据库概述:books数据库 610
25.4 SQL 612
25.5 MySQL和MySQL Connector/J的安装简介 619
25.6设置MySQL用户账户简介 620
25.7在MySQL中创建books数据库 620
25.8用JDBC操作数据库 621
25.9 RowSet接口 633
25.10 Java DB/Apache Derby 635
25.11 PreparedStatement 636
25.12存储过程 647
25.13事务处理 647
25.14小结 648
25.15 Web资源 648
第26章JavaServer Faces与Web程序(1) 649
26.1简介 649
26.2超文本传输协议(HTTP)事务 650
26.3多层程序体系结构 653
26.4第一个JSF Web程序 654
26.5 JSF程序的模型-视图-控制器结构 660
26.6常用的JSF组件 660
26.7使用JSF标准验证器进行验证 663
26.8会话跟踪 668
26.9小结 673
第27章JavaServer Faces与Web程序(2) 674
27.1简介 674
27.2在Web程序中访问数据库 674
27.3 Ajax 684
27.4向Validation程序添加Ajax功能 685
27.5小结 687
第28章Web服务 688
28.1简介 689
28.2 Web服务基础 690
28.3简单对象访问协议(SOAP) 690
28.4表述性状态转移(REST) 691
28.5 JavaScript对象标注(JSON) 691
28.6发布和消费基于SOAP的Web服务 691
28.7发布和使用基于REST的XML Web服务 700
28.8发布和消费基于REST的JSON Web服务 704
28.9在SOAP Web服务中使用会话跟踪 707
28.10消费数据库驱动的SOAP Web服务 718
28.11等式生成器:返回用户定义类型 723
28.12小结 730
附录A运算符优先级表 732
附录B ASCII字符集 733
附录C关键字和保留字 734
附录D基本类型 735
附录E使用Java API文档 736
附录F使用调试器 742
附录G格式化输出 753
附录H GroupLayout 766
附录Ⅰ Java桌面集成组件 774
附录J UML2:其他框图类型 778
索引 779