书籍详情
薛小小学Java
作者:(德)菲利普·阿克曼
出版社:人民邮电出版社
出版时间:2020-01-01
ISBN:9787115525031
定价:¥139.00
购买这本书可以去
内容简介
本书以幽默诙谐的写作方式,由浅入深、图文并茂地讲解了使用Java进行程序开发所需要的知识和技术。结合具体实例,书中介绍了变量、基本数据类型、控制流程等基本概念,以及泛型、lambda、JavaFX等高级概念,同时论述了如何正确编写面向对象程序,哪些是好的、哪些是坏的编程习惯,如何让代码可读性更强,面向服务架构和函数式编程的区别,如何测试,等等。除此之外,书中还讲解了XML、CSS、SQL等相关知识。
作者简介
菲利普·阿克曼(Philip Ackermann)是德国弗劳恩霍夫应用信息技术研究所的软件开发人员,计算机科学硕士。他对Java虚拟机和整洁代码充满热情,能驾轻就熟地工作在不同的开发环境中,或者辗转在Java和Node.js之间,还能游刃有余地应对小薛提出的CSS、XML、SQL或其他语言的问题。
目录
第1章 你好!小薛
引言和第一个程序
Java无处不在 2
JRE,JDK,SE,EE,ME 2
安装Java 3
Hallo Schr dinger 6
手动编译 7
运行程序 10
了解编译器和Java虚拟机 11
阶段练习 12
独立完成练习 13
开发环境 15
安装Eclipse 15
工作区和工作台 16
第一个项目 18
打包要有序 21
轻而易举地创建一个包 23
用Eclipse创建一个新的类 24
与程序进行交互 26
什么是流 28
游戏开始——“文字冒险” 30
Java的历史 35
第2章 万物皆是数据类型
变量和基本数据类型
变量和数据类型 40
数据类型的分类 41
数字类型有哪些 42
长数字的新读法 45
数字小练习 46
二进制、八进制、十进制和十六进制 47
变量名的命名规则 49
Java语言编码规范——选择有效的变量名 51
运算和运算符 53
深入研究除法运算 54
用 BigDecimal 进行精确计算 55
自增和自减语句 56
计算练习 57
数字类型的转换 58
字符类型变量 60
阶段练习——凯撒字母加密法 62
非真即假 64
关系运算符 66
阶段练习——说出真相! 67
包装类 69
数字类型练习 72
字符类型练习 73
总结 74
第3章 我是不是曾经到过这里!
Java的流程控制语句
流程控制的应用 78
要是生活中没有“如果”该多好 78
语句的嵌套 79
if-else判断语句 80
阶段练习——条件分支 81
布尔运算符 83
也可以不用加“花括号” 83
判定条件的缩写形式 84
条件运算符( 表达式) 85
多条件判定语句(switch语句) 85
阶段练习 87
switch语句的字符串参数 88
远离现实 89
玩转循环 92
循环嵌套 95
循环语句练习 96
编程练习——查找质数 96
综合练习——小薛的皇冠 100
调试程序 103
中断循环 106
循环的标签 107
综合练习——打印日历 108
本章总结 112
第4章 字符串的“盛宴”
有关字符串的操作
字符串的定义 114
访问字符串中的字符 116
字符串的拆分 117
字符和字符串的运算 120
字符串的比较 123
部分字符串的比较 123
阶段练习——字符串比较 125
字符串的查找和替换操作 127
阶段练习——菜单黑客 129
字符串类对象的创建 131
字符串池更专业的分析 135
字符串是不可改变的 139
可以被改变的字符串 140
字符的删除、替换以及镜像 142
阶段练习 144
本章总结 145
第5章 对象,一个特别的类
类、对象和方法
代码的重复使用——方法 148
代码的重构 152
提高代码的可读性 156
方法的注释 157
方法的返回值 158
阶段练习——天气预报 159
初识类和对象 160
封装 164
set和get方法 166
阶段练习 169
多参数的set方法 170
阶段练习——类和对象 172
变量和方法的访问权限 174
构造函数 176
对象转换成字符串型数据 180
关联源代码 181
原文输出对象的内容 182
流畅接口 183
创建对象的流程 185
引用类型、堆和垃圾回收机制 189
如果堆满了怎么办 191
析构函数 192
请慎用堆 193
安装Eclipse的虚拟机 193
另一个存储空间:栈 202
对比栈和堆的使用情况 204
阶段练习——这事儿是猫干的 206
阶段练习——栈还是堆 208
第6章 他到底是从哪里来的
继承
继承 212
继承可以减少重复编写代码的工作量 214
有其父必有其子 216
通过方法的重写制定行为 217
禁止重写方法 219
阶段练习——小花的继承关系 220
可以访问“祖父类”吗 222
继承和构造函数 224
构造函数链的修复 225
阶段练习——构造函数 228
阶段练习——继承关系 229
引用型数据的强制类型转换 232
向上转型 233
类型转换 234
方法的重载 235
阶段练习——订阅服务 236
面向服务和面向对象程序设计 238
面向对象程序设计的解决方案 239
阶段练习——重载 240
阶段练习——登台表演 241
本章总结 243
第7章 接口,疼痛的记忆
抽象类和接口
抽象类 246
抽象方法 248
阶段练习——不管是数字的还是模拟的,抽象的才是关键! 250
阶段练习——都是抽象的吗 258
接口 259
阶段练习——接口的应用 264
接口和多态…… 266
接口和继承 267
宁少勿多…… 269
接口中的常量 270
常量类中的常量 270
静态导入 271
静态块 272
枚举常量 273
接口内容复习 274
类的其他形式 275
静态成员类 275
非静态成员类 277
局部类 278
匿名类 279
抽象类和多态——小薛,你是不是都明白了? 281
第8章 你真的了解你所有的鞋吗
数组、集合和映射
我想有更多的猫,交更多的女朋友 284
对象的欲望 286
多维数组 287
全都给我吧 288
你已经有这样的鞋了! 289
凡事都要亲力亲为 290
探索对象的相同性 292
到底是相同还是不同 293
数组自己不会增长 293
集合 295
完善买鞋的测试程序! 297
阶段练习 299
迭代器 300
Link和List 301
“机不可失,失不再来” 302
Hash的春天 303
阶段练习——Set辅助刑警破案 304
阶段练习——Set结构的买鞋测试程序 307
生成哈希码 308
树和房间 311
是大码还是小码 313
不用树结构排序 316
阶段练习——鞋的排序 318
映射 319
阶段练习——你已经有这么多双鞋了 320
后进先出栈 323
请排队,好吗 324
终于到Java 8 的lambda表达式了 325
filter()、map()和reduce() 327
阶段练习——高跟鞋!!! 331
本章内容回顾——lambda表达式 333
第9章 异常和异常处理
异常处理
从错误变成异常 336
第一个异常 337
抛出异常前的准备 338
要学会捕获异常 340
善后工作——finally语句块 342
阶段练习——自定义异常处理 343
异常的继承 345
异常用来交互信息——究竟发生了什么异常 346
降低报错信息的“耦合性” 348
重新抛出异常 349
如何进行异常处理 350
阶段练习——转发异常的另一种方式 351
不必捕获的异常——未检查型异常 353
防御式编程和运行时异常 356
异常处理日志 357
让门卫一起记录日志 358
不用再抢救了 360
阶段练习——内存满了 362
自动关闭资源 363
读取文件操作 364
规则也有例外 366
第10章 嘿,伙计,你不能进来!
泛型
通用类型 370
泛型出现之前 371
使用泛型以后 372
阶段练习——猫狗大战 374
猫篮子还可以作为子类 375
标准化接口 376
通配符表达问题 377
上限通配符 380
麻烦:不允许小薛进行写操作 381
下限通配符 384
泛型方法 386
阶段练习——通配符 387
复习内容 390
咖啡渣——本章中的“干货” 393
第11章 狂野的洪流——输入和输出
文件、流和序列化
Bossingen带来的文件 396
再来点吗?试试二进制! 397
二进制文件的写入操作——字节输出流 399
巨慢——复制文件的普通流操作 400
更快些——复制文件的字节缓存流操作 401
谁还读取字节呀?文本文件的字符流读取操作 402
文本文件的字符流写入操作 403
CSV——文本文件的转换 404
向目录开炮 407
终于整理好了——生成文件和目录 408
客户信息转换流水线 410
精细过滤是成功的一半——目录的过滤 412
走在正确的“路径”上:新的文件IO API 413
客户信息转换——现在更简单了 416
对象的保存 418
嵌套对象的序列化 421
影响序列化和反序列化 423
用writeObject()和readObject()方法实现自定义序列化 424
阶段练习——榆木的脑袋和聪明的脑袋 426
回顾关于流的内容 428
第12章 保持联系
线程
进程与线程 430
第一个线程 432
激活线程之夜 433
输出偶数还是奇数 435
获得线程状态 437
线程睡觉了 438
英雄,当心! 439
等待其他人 442
同步 443
阶段练习——先来一份偶数,谢谢! 446
线程死锁! 447
发现和避免死锁 449
成功的关键 451
活锁、饿死、优先级和啤酒 453
活锁 453
设置优先级 456
等待和通知 458
饿死 460
阶段练习——等待和睡觉 462
综合练习——两位英雄对4000个兽人,各司其职 463
本章总结——防止你“掉线” 467
第13章 应该可以看到结果!
部署程序和生成文档
打包程序 470
阶段练习——打包JAR文件 473
Java Web Start 475
在Eclipse中添加函数库 477
你好,Doc大叔——用javadoc生成文档 480
结构化和模块化 483
阶段练习——模块化?明白! 487
编译模块 489
现在你已经学会打包了 491
第14章 交换学生——数据的交互格式
XML
XML 494
俄罗斯腊肠 500
阶段练习——XML的音乐学校 505
到底是元素还是属性 507
读取XML文档 508
追踪犬——SAX 508
训练有素的追踪犬还是“不要打给我,
我会打给你的”——StAX 512
Cursor API 513
Iterator API 513
文档对象模型 515
阶段练习——Flower Power 518
编写XML文档 520
阶段练习——1、2还是3?SAX,StAX还是DOM?
什么时候该用什么? 523
条条大路通Java 525
JAXB 527
从XML转换到Java及反向转换 529
阶段练习——花之力量 531
关于X某某的总结 535
第15章 用JDBC保存数据
数据库
关系型数据库 538
第一个SQL表格 539
生成链接 543
添加数据记录 545
阶段练习——英雄和邮票 547
指令总结 550
准备就绪 551
读取数据 552
什么是你想要的?根据条件筛选数据记录 554
数据排序后输出 556
阶段练习——谁是最强者 557
连接多个表中的信息 561
所有都得重来——事务 562
关系型数据库和Java对象间的映射 564
阶段练习——把魔鬼滚回去 565
复习 568
本章最重要的部分 569
第16章 全新的舞步
用Swing和JavaFX来实现GUI编程
离开控制台的动力——Swing 572
全部都在框架里——如何生成GUI组件 572
全部要行列对齐——怎么布局GUI组件 575
用网格布局把所有组件放在网格里 578
用网格包布局合并单元格 580
阶段练习——鞋放在盒子里好,还是放在网格里好 584
布局好了,但是动作……还没有呢?怎么给GUI组件添加动作 587
用Swing实现用户输入信息验证 591
阶段练习——贩鞋商人 592
更绚丽、更多功能的JavaFX 596
JavaFX正式登台表演 598
再用CSS加些“味道” 602
添加动作 604
JavaFX中对用户输入数据的验证 605
阶段练习——用JavaFX来做交易 606
专业做法——无须监听器为组件添加动作 607
带行为的滑块 609
核心专家的绑定方案同样可以解决 610
粉刷匠和油漆工学徒的考试重点 613
第17章 走向世界
国际化、本地化、格式化、模式匹配和正则表达式
本地化 616
软件的国际化 619
阶段练习——芬兰语的鞋盒 621
钟情于英语 624
类的加载 625
阶段练习——想要红酒还是啤酒 627
数字和货币的格式化 629
日期和时间的格式化 630
阶段练习——货币换算器 632
文本消息的格式化 634
新版日期/时间API 635
时区、时间轴、时间点和时段 636
不需要时间轴表示日期、时间和时段 638
时区和时差 640
只要再多一点时间,一切就都清楚了 641
日期和时间的格式化 642
字符串类的格式化 643
阶段练习——格式化走起! 645
用正则表达式进行样式匹配 646
阶段练习——这个电话号码不要连接符 651
寻找字符串的子串 651
阶段练习——匹配还是不匹配?不算难事! 653
通过组获取某个子串 654
E-Mail地址的认证 655
本章重要内容总结 657
第18章 你确定结果正确吗?单元测试和Java Web Start的后续内容
单元测试
单元测试 660
测试框架 661
阶段练习——可我已经订了一份鸡尾酒 668
异常情况的测试 672
阶段练习——根本不难喝呀 674
JWS后续内容 676
这一单元里最重要的知识 679
引言和第一个程序
Java无处不在 2
JRE,JDK,SE,EE,ME 2
安装Java 3
Hallo Schr dinger 6
手动编译 7
运行程序 10
了解编译器和Java虚拟机 11
阶段练习 12
独立完成练习 13
开发环境 15
安装Eclipse 15
工作区和工作台 16
第一个项目 18
打包要有序 21
轻而易举地创建一个包 23
用Eclipse创建一个新的类 24
与程序进行交互 26
什么是流 28
游戏开始——“文字冒险” 30
Java的历史 35
第2章 万物皆是数据类型
变量和基本数据类型
变量和数据类型 40
数据类型的分类 41
数字类型有哪些 42
长数字的新读法 45
数字小练习 46
二进制、八进制、十进制和十六进制 47
变量名的命名规则 49
Java语言编码规范——选择有效的变量名 51
运算和运算符 53
深入研究除法运算 54
用 BigDecimal 进行精确计算 55
自增和自减语句 56
计算练习 57
数字类型的转换 58
字符类型变量 60
阶段练习——凯撒字母加密法 62
非真即假 64
关系运算符 66
阶段练习——说出真相! 67
包装类 69
数字类型练习 72
字符类型练习 73
总结 74
第3章 我是不是曾经到过这里!
Java的流程控制语句
流程控制的应用 78
要是生活中没有“如果”该多好 78
语句的嵌套 79
if-else判断语句 80
阶段练习——条件分支 81
布尔运算符 83
也可以不用加“花括号” 83
判定条件的缩写形式 84
条件运算符( 表达式) 85
多条件判定语句(switch语句) 85
阶段练习 87
switch语句的字符串参数 88
远离现实 89
玩转循环 92
循环嵌套 95
循环语句练习 96
编程练习——查找质数 96
综合练习——小薛的皇冠 100
调试程序 103
中断循环 106
循环的标签 107
综合练习——打印日历 108
本章总结 112
第4章 字符串的“盛宴”
有关字符串的操作
字符串的定义 114
访问字符串中的字符 116
字符串的拆分 117
字符和字符串的运算 120
字符串的比较 123
部分字符串的比较 123
阶段练习——字符串比较 125
字符串的查找和替换操作 127
阶段练习——菜单黑客 129
字符串类对象的创建 131
字符串池更专业的分析 135
字符串是不可改变的 139
可以被改变的字符串 140
字符的删除、替换以及镜像 142
阶段练习 144
本章总结 145
第5章 对象,一个特别的类
类、对象和方法
代码的重复使用——方法 148
代码的重构 152
提高代码的可读性 156
方法的注释 157
方法的返回值 158
阶段练习——天气预报 159
初识类和对象 160
封装 164
set和get方法 166
阶段练习 169
多参数的set方法 170
阶段练习——类和对象 172
变量和方法的访问权限 174
构造函数 176
对象转换成字符串型数据 180
关联源代码 181
原文输出对象的内容 182
流畅接口 183
创建对象的流程 185
引用类型、堆和垃圾回收机制 189
如果堆满了怎么办 191
析构函数 192
请慎用堆 193
安装Eclipse的虚拟机 193
另一个存储空间:栈 202
对比栈和堆的使用情况 204
阶段练习——这事儿是猫干的 206
阶段练习——栈还是堆 208
第6章 他到底是从哪里来的
继承
继承 212
继承可以减少重复编写代码的工作量 214
有其父必有其子 216
通过方法的重写制定行为 217
禁止重写方法 219
阶段练习——小花的继承关系 220
可以访问“祖父类”吗 222
继承和构造函数 224
构造函数链的修复 225
阶段练习——构造函数 228
阶段练习——继承关系 229
引用型数据的强制类型转换 232
向上转型 233
类型转换 234
方法的重载 235
阶段练习——订阅服务 236
面向服务和面向对象程序设计 238
面向对象程序设计的解决方案 239
阶段练习——重载 240
阶段练习——登台表演 241
本章总结 243
第7章 接口,疼痛的记忆
抽象类和接口
抽象类 246
抽象方法 248
阶段练习——不管是数字的还是模拟的,抽象的才是关键! 250
阶段练习——都是抽象的吗 258
接口 259
阶段练习——接口的应用 264
接口和多态…… 266
接口和继承 267
宁少勿多…… 269
接口中的常量 270
常量类中的常量 270
静态导入 271
静态块 272
枚举常量 273
接口内容复习 274
类的其他形式 275
静态成员类 275
非静态成员类 277
局部类 278
匿名类 279
抽象类和多态——小薛,你是不是都明白了? 281
第8章 你真的了解你所有的鞋吗
数组、集合和映射
我想有更多的猫,交更多的女朋友 284
对象的欲望 286
多维数组 287
全都给我吧 288
你已经有这样的鞋了! 289
凡事都要亲力亲为 290
探索对象的相同性 292
到底是相同还是不同 293
数组自己不会增长 293
集合 295
完善买鞋的测试程序! 297
阶段练习 299
迭代器 300
Link和List 301
“机不可失,失不再来” 302
Hash的春天 303
阶段练习——Set辅助刑警破案 304
阶段练习——Set结构的买鞋测试程序 307
生成哈希码 308
树和房间 311
是大码还是小码 313
不用树结构排序 316
阶段练习——鞋的排序 318
映射 319
阶段练习——你已经有这么多双鞋了 320
后进先出栈 323
请排队,好吗 324
终于到Java 8 的lambda表达式了 325
filter()、map()和reduce() 327
阶段练习——高跟鞋!!! 331
本章内容回顾——lambda表达式 333
第9章 异常和异常处理
异常处理
从错误变成异常 336
第一个异常 337
抛出异常前的准备 338
要学会捕获异常 340
善后工作——finally语句块 342
阶段练习——自定义异常处理 343
异常的继承 345
异常用来交互信息——究竟发生了什么异常 346
降低报错信息的“耦合性” 348
重新抛出异常 349
如何进行异常处理 350
阶段练习——转发异常的另一种方式 351
不必捕获的异常——未检查型异常 353
防御式编程和运行时异常 356
异常处理日志 357
让门卫一起记录日志 358
不用再抢救了 360
阶段练习——内存满了 362
自动关闭资源 363
读取文件操作 364
规则也有例外 366
第10章 嘿,伙计,你不能进来!
泛型
通用类型 370
泛型出现之前 371
使用泛型以后 372
阶段练习——猫狗大战 374
猫篮子还可以作为子类 375
标准化接口 376
通配符表达问题 377
上限通配符 380
麻烦:不允许小薛进行写操作 381
下限通配符 384
泛型方法 386
阶段练习——通配符 387
复习内容 390
咖啡渣——本章中的“干货” 393
第11章 狂野的洪流——输入和输出
文件、流和序列化
Bossingen带来的文件 396
再来点吗?试试二进制! 397
二进制文件的写入操作——字节输出流 399
巨慢——复制文件的普通流操作 400
更快些——复制文件的字节缓存流操作 401
谁还读取字节呀?文本文件的字符流读取操作 402
文本文件的字符流写入操作 403
CSV——文本文件的转换 404
向目录开炮 407
终于整理好了——生成文件和目录 408
客户信息转换流水线 410
精细过滤是成功的一半——目录的过滤 412
走在正确的“路径”上:新的文件IO API 413
客户信息转换——现在更简单了 416
对象的保存 418
嵌套对象的序列化 421
影响序列化和反序列化 423
用writeObject()和readObject()方法实现自定义序列化 424
阶段练习——榆木的脑袋和聪明的脑袋 426
回顾关于流的内容 428
第12章 保持联系
线程
进程与线程 430
第一个线程 432
激活线程之夜 433
输出偶数还是奇数 435
获得线程状态 437
线程睡觉了 438
英雄,当心! 439
等待其他人 442
同步 443
阶段练习——先来一份偶数,谢谢! 446
线程死锁! 447
发现和避免死锁 449
成功的关键 451
活锁、饿死、优先级和啤酒 453
活锁 453
设置优先级 456
等待和通知 458
饿死 460
阶段练习——等待和睡觉 462
综合练习——两位英雄对4000个兽人,各司其职 463
本章总结——防止你“掉线” 467
第13章 应该可以看到结果!
部署程序和生成文档
打包程序 470
阶段练习——打包JAR文件 473
Java Web Start 475
在Eclipse中添加函数库 477
你好,Doc大叔——用javadoc生成文档 480
结构化和模块化 483
阶段练习——模块化?明白! 487
编译模块 489
现在你已经学会打包了 491
第14章 交换学生——数据的交互格式
XML
XML 494
俄罗斯腊肠 500
阶段练习——XML的音乐学校 505
到底是元素还是属性 507
读取XML文档 508
追踪犬——SAX 508
训练有素的追踪犬还是“不要打给我,
我会打给你的”——StAX 512
Cursor API 513
Iterator API 513
文档对象模型 515
阶段练习——Flower Power 518
编写XML文档 520
阶段练习——1、2还是3?SAX,StAX还是DOM?
什么时候该用什么? 523
条条大路通Java 525
JAXB 527
从XML转换到Java及反向转换 529
阶段练习——花之力量 531
关于X某某的总结 535
第15章 用JDBC保存数据
数据库
关系型数据库 538
第一个SQL表格 539
生成链接 543
添加数据记录 545
阶段练习——英雄和邮票 547
指令总结 550
准备就绪 551
读取数据 552
什么是你想要的?根据条件筛选数据记录 554
数据排序后输出 556
阶段练习——谁是最强者 557
连接多个表中的信息 561
所有都得重来——事务 562
关系型数据库和Java对象间的映射 564
阶段练习——把魔鬼滚回去 565
复习 568
本章最重要的部分 569
第16章 全新的舞步
用Swing和JavaFX来实现GUI编程
离开控制台的动力——Swing 572
全部都在框架里——如何生成GUI组件 572
全部要行列对齐——怎么布局GUI组件 575
用网格布局把所有组件放在网格里 578
用网格包布局合并单元格 580
阶段练习——鞋放在盒子里好,还是放在网格里好 584
布局好了,但是动作……还没有呢?怎么给GUI组件添加动作 587
用Swing实现用户输入信息验证 591
阶段练习——贩鞋商人 592
更绚丽、更多功能的JavaFX 596
JavaFX正式登台表演 598
再用CSS加些“味道” 602
添加动作 604
JavaFX中对用户输入数据的验证 605
阶段练习——用JavaFX来做交易 606
专业做法——无须监听器为组件添加动作 607
带行为的滑块 609
核心专家的绑定方案同样可以解决 610
粉刷匠和油漆工学徒的考试重点 613
第17章 走向世界
国际化、本地化、格式化、模式匹配和正则表达式
本地化 616
软件的国际化 619
阶段练习——芬兰语的鞋盒 621
钟情于英语 624
类的加载 625
阶段练习——想要红酒还是啤酒 627
数字和货币的格式化 629
日期和时间的格式化 630
阶段练习——货币换算器 632
文本消息的格式化 634
新版日期/时间API 635
时区、时间轴、时间点和时段 636
不需要时间轴表示日期、时间和时段 638
时区和时差 640
只要再多一点时间,一切就都清楚了 641
日期和时间的格式化 642
字符串类的格式化 643
阶段练习——格式化走起! 645
用正则表达式进行样式匹配 646
阶段练习——这个电话号码不要连接符 651
寻找字符串的子串 651
阶段练习——匹配还是不匹配?不算难事! 653
通过组获取某个子串 654
E-Mail地址的认证 655
本章重要内容总结 657
第18章 你确定结果正确吗?单元测试和Java Web Start的后续内容
单元测试
单元测试 660
测试框架 661
阶段练习——可我已经订了一份鸡尾酒 668
异常情况的测试 672
阶段练习——根本不难喝呀 674
JWS后续内容 676
这一单元里最重要的知识 679
猜您喜欢