第1部分 做好准备工作 2
第1章 准备学习Java 2
1.1 Java是什么,什么是Java 2
1.1.1 Java是一种跨平台的计算机编程语言 2
1.1.2 Java的开发及运行环境 5
1.1.3 Java程序的开发流程 5
1.2让计算机更聪明——Java能做什么 6
1.2.1 Java的桌面应用 7
1.2.2 Java的网页应用 7
1.2.3 Java的手机应用 8
1.2.4 Java的其他应用 9
1.3开始搭建Java环境 9
1.3.1 JDK简介 10
1.3.2 JDK的下载及安装 11
1.3.3 JDK的相关配置 15
1.4开发第一个Java程序 17
1.4.1 Hello, World!程序 17
1.4.2 Java程序的构成 21
1.5如何学习Java 21
1.6小结 23
1.7习题 24
第2章 现实世界VS Java世界——了解面向对象的Java 25
2.1万事万物皆对象——理解对象模型 25
2.1.1程序员眼中的世界——现实世界中的对象 25
2.1.2什么是“对象” 25
2.1.3现象世界中的对象 26
2.2对象之间的差别——事物的属性 28
2.2.1何为对象的属性 28
2.2.2对象与属性的关系 30
2.3万物皆有变化——对象的方法 30
2.3.1对象的方法定义 30
2.3.2对象方法的一个示例 32
2.4“物”以“类”聚——什么是“类” 33
2.4.1为什么要定义“类”这个概念 33
2.4.2什么是“类”,类与对象的关系 36
2.4.3“类”与“类”之间的关系 37
2.5为什么要面向对象编程 37
2.5.1面向对象有什么好处 38
2.5.2面向对象编程的特点 40
2.6程序中的对象——Java的对象世界 43
2.6.1 Java对象的模具——Java的类 43
2.6.2从模具到成品——用class定义对象 45
2.6.3什么是Java中的对象 46
2.6.4拿来主义——extends的威力 47
2.6.5对象的“使用说明”——方法的实现 50
2.7内外有别——对象的封装 51
2.7.1公开还是保密——访问控制关键字 51
2.7.2要遵纪守法——对象的操作方式 54
2.8绝知此事要躬行——自己动手定义对象 56
2.8.1如何定义一个圆的类 57
2.8.2如何定义一个圆的方法 59
2.8.3查看运行的结果 60
2.9小结 61
2.10习题 61
第2部分 程序中的数据 64
第3章 事物的属性——变量和常量 64
3.1如何表示各种各样的属性——属性是由数据表示的 64
3.1.1数据也不简单——数据是多种多样的 64
3.1.2计算机比较“贰”——只认0和1 64
3.1.3小数怎么办——浮点型 67
3.1.4字母怎么办——字符型 68
3.1.5只表示“真”和“假”——布尔型 70
3.2数据也可以“包装”——基本类型的对象类型 70
3.2.1对象类型给我们带来了什么——对基本类型的特性进行封装 71
3.2.2仍从最简单的开始——整型的对象类型 71
3.2.3当然不止是整数类型——其他基本类型的对象类型 73
3.3数据住在何处——Java的变量 75
3.3.1先登记,再入住——变量的定义与初始化 75
3.3.2改变变量的值——为变量赋值 77
3.3.3变量也玩克隆——变量的复制 80
3.3.4铁路民警,各管一段——变量的作用域 82
3.3.5数据“接力赛”——变量作为函数参数 85
3.4一切因你而变——神奇的自动打包与解包 88
3.4.1自动打包——基本类型的封装 88
3.4.2自动解包——打包的逆过程 89
3.4.3实例分析——事实说明一切 91
3.5不能改变值的“变量”——常量 93
3.6小结 94
3.7习题 95
第3部分 较复杂的数据 98
第4章 变量的组合——数组 98
4.1 Java中的数组 98
4.1.1为什么要有数组 98
4.1.2 Java数组的定义 99
4.2最简单的数组——一维数组 100
4.2.1 Java中一维数组的声明与创建 100
4.2.2 Java中数组的基本操作 105
4.2.3为什么叫一维数组 109
4.3数组的数组——二维数组 110
4.3.1认识二维数组 110
4.3.2二维数组的初始化 112
4.3.3二维数组的访问 115
4.3.4不规则数组 117
4.4数组的数组的数组 120
4.4.1多维数组的概念及其声明 120
4.4.2多维数组的创建与初始化 121
4.5数组的高级应用 123
4.5.1认识Arrays类 123
4.5.2数组内容的输出 124
4.5.3数组的填充 125
4.5.4数组的复制 126
4.5.5数组的比较 128
4.5.6数组的排序 132
4.5.7数组的查找 134
4.6小结 138
4.7习题 138
第5章 字符大派对——字符串 139
5.1认识String类 139
5.1.1 String类型和字符数组的区别 139
5.1.2声明与创建String对象 140
5.1.3字符串的连接 147
5.2获取字符串的信息 148
5.2.1求字符串的长度 148
5.2.2判断字符串是否相等 149
5.2.3字符串的比较 151
5.2.4字符串的查找 153
5.2.5取得子串与判断字符串的开头与结尾 156
5.3字符串的操作 158
5.3.1分割字符串 158
5.3.2大小写转换 159
5.3.3删除两端空白字符 161
5.3.4字符串的替换 162
5.4字符串与其他类型的关系 163
5.4.1对象及基本类型变量的字符串表示 163
5.4.2字符串与基本数据类型的相互转换 165
5.4.3格式化字符串 169
5.4.4日期和时间的格式化字符串 172
5.5字符串与字符数组 173
5.5.1字符串到字符数组 173
5.5.2复制字符串中的字符到字符数组 174
5.6 StringBuffer和StringBuilder类 176
5.6.1 StringBuffer类的方法 176
5.6.2 StringBuffer类应用举例 179
5.7小结 181
5.8习题 181
第4部分 程序功能的实现 184
第6章 改变变量的值——方法和它的表达式 184
6.1从函数的角度来理解方法 184
6.2方法的参数与返回类型 186
6.2.1 static关键字 186
6.2.2方法的返回类型 188
6.2.3方法的参数 189
6.2.4一个例子 190
6.3方法的“灵魂”——实现 193
6.4方法中的表达式 194
6.4.1从小学数学做起——算术表达式 194
6.4.2总是需要做比较——关系表达式 196
6.4.3拥有侦探的思维——逻辑表达式 196
6.4.4返朴归真——位运算表达式 199
6.4.5表达式举例 200
6.5 Java的其他运算符 202
6.5.1赋值运算符 203
6.5.2自增和自减运算符 204
6.5.3括号运算符 205
6.5.4条件运算符(conditional operator) 206
6.6 Java表达式中的计算顺序与类型转换 207
6.6.1运算符的优先级与结合性 207
6.6.2数据类型转换 210
6.7小结 214
6.8习题 215
第7章 不仅仅是表达式——Java中的语句 216
7.1程序的结构化设计 216
7.1.1顺序结构(sequence structure) 216
7.1.2选择结构(selection structure) 217
7.1.3循环结构(iteration structure) 218
7.2具体情况具体分析——if判断语句 219
7.2.1初识简单的if语句 219
7.2.2 if…else语句 221
7.2.3多层if语句的嵌套 222
7.2.4一个if语句的例子 224
7.3更多的分支选择——switch语句 226
7.3.1 switch语句的语法 226
7.3.2 switch语句的流程图 226
7.3.3深入了解switch语句 227
7.3.4 switch语句的例子 230
7.4懒人的福音——循环语句 233
7.4.1我们不需比高斯聪明——编程计算1+2+…+100 233
7.4.2给我一双慧眼吧——发现隐藏的循环规律 234
7.5每人执行一次——for循环语句 236
7.5.1 for循环语句的语法 236
7.5.2 for循环语句的流程图 237
7.5.3 for循环语句的例子 238
7.6更方便使用的for each循环 239
7.7 while和do-while循环 241
7.7.1 while和do-while循环语句的语法 241
7.7.2 while和do-while循环语句的流程图 242
7.7.3 while和do-while循环语句的例子 243
7.8 break和continue语句 244
7.8.1 break和continue语句的流程图 245
7.8.2 break和continue语句的例子 246
7.9当一个不再够用——循环也可以嵌套 248
7.9.1“冒泡”排序与矩阵转置 248
7.9.2嵌套循环的流程图 249
7.9.3嵌套循环的例子 251
7.10慧眼识英才——哪种循环适合你 253
7.11小结 255
7.12习题 255
第5部分 面向对象的高级内容 258
第8章 方法的多样性——继承和多态 258
8.1如何创建对象 258
8.2对象的构造方法 260
8.2.1对象构造方法的概念 260
8.2.2构造方法的执行 261
8.2.3构造方法的重载 261
8.2.4构造方法那些事儿 264
8.3类的继承 266
8.3.1继承的概念 266
8.3.2 super关键字 269
8.3.3构造方法的例子 270
8.3.4不能被继承的final类 274
8.4多样的Java方法 274
8.4.1一般方法的重载(method overloading) 275
8.4.2继承中方法的覆盖(method overriding) 277
8.4.3重载vs覆盖 280
8.5 对象的类型转换 282
8.5.1转换对象类型 282
8.5.2方法的多样性(polymorphism) 285
8.5.3判断对象的类型——instanceof关键字 289
8.6 Object类及它里面的方法 291
8.6.1自动继承Object类 291
8.6.2将对象变成字符串——toString()方法 291
8.6.3获得对象类型名——getClass()方法 293
8.6.4判断两个对象是否相同——equals()方法 294
8.7小结 295
8.8习题 296
第9章 形形色色的对象类型——Java中的类 297
9.1作为类型的类 297
9.1.1类作为方法的参数和返回类型 297
9.1.2对象的数组 300
9.2类中类——嵌套类 303
9.2.1认识嵌套类 303
9.2.2嵌套类的关系 305
9.3抽象类 308
9.3.1抽象类的概念 308
9.3.2抽象类的定义 309
9.3.3抽象类的优势 311
9.4接口 317
9.4.1接口的概念和定义 318
9.4.2接口的实现 319
9.4.3模拟的多重继承 320
9.4.4接口的多重继承 322
9.4.5普通类、抽象类和接口 324
9.4.6接口的例子 326
9.5 如何使用Java类库 330
9.5.1使用Java类库的准备工作 331
9.5.2 Calendar类 331
9.5.3 Random和Math类 334
9.6 小结 336
9.7习题 337
第10章 Java程序的对外接口——输出/输入对象 338
10.1向Java程序传递参数 338
10.1.1 Java主程序的入口——main()方法 338
10.1.2如何在Java程序运行时传递参数 339
10.1.3没有传递参数时的情况 340
10.2基本输入/输出——read()和print() 341
10.2.1 Java的输入——System.in.read() 341
10.2.2 Java的输出——System.out.print() 344
10.3输入/输出流与文件 346
10.3.1 Java中流的概念 346
10.3.2 Java中的文件类File 348
10.4文本文件的输入/输出 352
10.4.1使用FileReader对象读取数据 353
10.4.2使用FileWriter对象写数据 356
10.4.3文本文件输入/输出实例 362
10.5文本字符流的I/O 364
10.5.1使用Scanner对象读取数据 364
10.5.2使用PrintWriter对象写数据 367
10.5.3重定向与文本I/O实例 371
10.6 bit(字节)流的I/O 373
10.6.1以字节的形式文本输出 373
10.6.2使用FileOutputStream和DataOutputStream对象写数据 374
10.6.3使用FileInputStream和DatalnputStream对象读数据 379
10.7具有缓冲区的输入输出 383
10.7.1为什么要有缓冲区 383
10.7.2带缓冲区的输入类——BufferedReader和BufferedInputStream 385
10.7.3带缓冲区的输出类——BufferedWriter和BufferedOutputStream 388
10.8百里挑一——如何选择合适的I/O类 392
10.9小结 394
10.10习题 394
第6部分 异常处理机制 396
第11章 意外的情况——异常处理 396
11.1异常处理的概念 396
11.1.1为什么要处理异常 396
11.1.2异常处理的简单范例 398
11.2 Java异常的体系结构 400
11.2.1 Exception类及其子类 400
11.2.2部分Java中的异常类的含义 402
11.2.3 Java中可能会抛出异常的方法 403
11.3 Java程序中如何处理异常 406
11.3.1捕获异常 407
11.3.2获取异常信息 408
11.3.3 try、catch和finally 410
11.3.4异常处理举例 411
11.4定义自己的异常 413
11.4.1自己定义异常类 413
11.4.2抛出异常 415
11.4.3异常抛出实例 416
11.5编写健壮的Java程序 419
11.6小结 422
11.7习题 423
第7部分 数据库入门 426
第12章 通过Java使用MySQL数据库 426
12.1请个数据管家——MySQL 426
12.1.1数据库的用途 426
12.1.2数据库的安装 427
12.1.3 MySQL数据库的基本配置 432
12.2认识结构化查询语言——SQL 433
12.2.1在MySQL数据库中增加与查找数据 434
12.2.2在MySQL数据库中修改或删除记录 435
12.3先和“管家”建立联系——用JDBC来连接到数据库 436
12.3.1如何通过JDBC连接MySQL数据库 436
12.3.2连接数据库的类与方法 439
12.4通过Java来操作MySQL数据库 440
12.4.1新增联系人——INSERT 440
12.4.2查看数据库中的记录——SELECT 444
12.4.3更新过时的记录项——UPDATE 449
12.4.4多余的记录就要删掉——DELETE 452
12.5小结 454
12.6习题 455
附录A A SCII码表 456
附录B:Java运算符表 458
附录C:Java关键字表 460