疯狂Java:突破程序员基本功的16课
正版图书
¥
18.56
3.1折
¥
59
全新
仅1件
作者李刚 著
出版社人民邮电出版社
出版时间2010-05
版次1
装帧平装
货号B20
上书时间2024-12-13
商品详情
- 品相描述:全新
图书标准信息
-
作者
李刚 著
-
出版社
人民邮电出版社
-
出版时间
2010-05
-
版次
1
-
ISBN
9787115221681
-
定价
59.00元
-
装帧
平装
-
开本
16开
-
纸张
胶版纸
-
页数
454页
-
字数
670千字
-
正文语种
简体中文
- 【内容简介】
-
《疯狂Java:突破程序员基本功的16课》是著名Java领域研究专家、Java语言培训大师、“疯狂Java”创始人李刚老师的又一倾心力作。在《疯狂Java:突破程序员基本功的16课》中,李刚老师一改枯燥的教学方式,专门面向Java初学者可能会遇到的各种学习问题,由点及面,详细讨论了Java内存管理、Java编程过程中常遇陷阱、常用数据结构的Java实现和Java程序开发的方法与经验等内容。
这些问题,看似“司空见惯”,实际上却是很多Java初学者在初学阶段都会遇到的问题和疑难。李刚老师在《疯狂Java:突破程序员基本功的16课》中,正是试图为读者们展现出这些疑点、难点的实质,让读者能在瞬息之间,彻底掌握住这门语言的“内功心法”。
这不是一本包容了所有技术细节的手册,而是一本Java前辈对于晚辈们的提点和教导。书中很多内容,是李刚老师和他的众多学子曾亲身体验过的桎梏,非常具有参考意义。《疯狂Java:突破程序员基本功的16课》承载了无数前辈的谆谆教导之言,向你展示着一个痛并快乐着的Java世界。
- 【目录】
-
第1课数组与内存控制1
1.1数组初始化2
1.1.1Java数组是静态的2
1.1.2数组一定要初始化吗5
1.1.3基本类型数组的初始化6
1.1.4引用类型数组的初始化8
1.2使用数组11
1.2.1数组元素就是变量11
1.2.2没有多维数组13
1.3小结18
第2课对象与内存控制19
2.1实例变量和类变量20
2.1.1实例变量和类变量的属性21
2.1.2实例变量的初始化时机24
2.1.3类变量的初始化时机27
2.2父类构造器29
2.2.1隐式调用和显式调用29
2.2.2访问子类对象的实例变量32
2.2.3调用被子类重写的方法34
2.3父子实例的内存控制36
2.3.1继承成员变量和继承方法的区别36
2.3.2内存中子类实例39
2.3.3父、子类的类变量43
2.4final修饰符44
2.4.1final修饰的变量44
2.4.2执行“宏替换”的变量49
2.4.3final方法不能被重写53
2.4.4内部类中的局部变量55
2.5小结58
第3课常见Java集合的实现细节59
3.1Set和Map60
3.1.1Set和Map的关系60
3.1.2HashMap和HashSet65
3.1.3TreeMap和TreeSet75
3.2Map和List80
3.2.1Map的values()方法81
3.2.2Map和List的关系87
3.3ArrayList和LinkedList88
3.3.1Vector和ArrayList的区别89
3.3.2ArrayList和LinkedList的实现差异92
3.3.3ArrayList和LinkedList的性能分析和适用场景96
3.4Iterator迭代器96
3.5小结100
第4课Java的内存回收101
4.1Java引用的种类102
4.1.1对象在内存中状态102
4.1.2强引用105
4.1.3软引用105
4.1.4弱引用108
4.1.5虚引用111
4.2Java的内存泄漏112
4.3垃圾回收机制116
4.3.1垃圾回收的基本算法116
4.3.2堆内存的分代回收118
4.3.3与垃圾回收的附加选项119
4.3.4常见垃圾回收器120
4.4内存管理的小技巧123
4.4.1尽量使用直接量123
4.4.2使用StringBuilder和StringBuffer进行字符串连接123
4.4.3尽早释放无用对象的引用124
4.4.4尽量少用静态变量124
4.4.5避免在经常调用的方法、循环中创建Java对象125
4.4.6缓存经常使用的对象125
4.4.7尽量不要使用finalize方法126
4.4.8考虑使用SoftReference126
4.5小结126
第5课表达式中的陷阱127
5.1关于字符串的陷阱128
5.1.1JVM对字符串的处理128
5.1.2不可变的字符串131
5.1.3字符串比较133
5.2表达式类型的陷阱135
5.2.1表达式类型的自动提升135
5.2.2复合赋值运算符的陷阱136
5.3输入法导致的陷阱138
5.4注释的字符必须合法138
5.5转义字符的陷阱139
5.5.1慎用字符的Unicode转义形式139
5.5.2中止行注释的转义字符140
5.6泛型可能引起的错误141
5.6.1原始类型变量的赋值141
5.6.2原始类型带来的擦除143
5.6.3创建泛型数组的陷阱145
5.7正则表达式的陷阱147
5.8多线程的陷阱148
5.8.1不要调用run方法148
5.8.2静态的同步方法150
5.8.3静态初始化块启动新线程执行初始化152
5.8.4注意多线程执行环境157
5.9小结161
第6课流程控制的陷阱163
6.1switch语句陷阱164
6.1.1default分支永远会执行吗164
6.1.2break的重要性165
6.1.3switch表达式的类型167
6.2标签引起的陷阱168
6.3if语句的陷阱169
6.3.1else隐含的条件169
6.3.2小心空语句171
6.4循环体的花括号173
6.4.1什么时候可以省略花括号173
6.4.2省略花括号的危险174
6.5for循环的陷阱175
6.5.1分号惹的祸175
6.5.2小心循环计数器的值178
6.5.3浮点数作循环计数器179
6.6foreach循环的循环计数器181
6.7小结182
第7课面向对象的陷阱183
7.1instanceof运算符的陷阱184
7.2构造器的陷阱188
7.2.1构造器之前的void188
7.2.2构造器创建对象吗189
7.2.3无限递归的构造器194
7.3持有当前类的实例195
7.4到底调用哪个重载的方法196
7.5方法重写的陷阱199
7.5.1重写private方法199
7.5.2重写其他访问权限的方法200
7.6非静态内部类的陷阱201
7.6.1非静态内部类的构造器201
7.6.2非静态内部类不能拥有静态成员203
7.6.3非静态内部类的子类204
7.7static关键字206
7.7.1静态方法属于类206
7.7.2静态内部类的限制207
7.8native方法的陷阱208
7.9小结209
第8课异常捕捉的陷阱211
8.1正确关闭资源的方式212
8.2finally块的陷阱215
8.2.1finally的执行规则215
8.2.2finally块和方法返回值217
8.3catch块的用法219
8.3.1catch块的顺序219
8.3.2不要用catch代替流程控制221
8.3.3只能catch可能抛出的异常221
8.3.4实际的修复225
8.4继承得到的异常227
8.5小结228
第9课线性表229
9.1线性表概述230
9.1.1线性表的定义及逻辑结构230
9.1.2线性表的基本操作231
9.2顺序存储结构231
9.3链式存储结构236
9.3.1单链表上的基本运算237
9.3.2循环链表243
9.3.3双向链表244
9.4线性表的分析251
9.4.1线性表的实现分析251
9.4.2线性表的功能251
9.5小结252
第10课栈和队列253
10.1栈254
10.1.1栈的基本定义254
10.1.2栈的常用操作254
10.1.3栈的顺序存储结构及实现255
10.1.4栈的链式存储结构及实现259
10.1.5Java集合中的栈263
10.2队列263
10.2.1队列的基本定义263
10.2.2队列的常用操作264
10.2.3队列的顺序存储结构及实现264
10.2.4循环队列268
10.2.5队列的链式存储结构及实现272
10.2.6Java集合中的队列275
10.3双向队列276
10.4小结278
第11课树和二叉树279
11.1树的概述280
11.1.1树的定义和基本术语280
11.1.2树的基本操作281
11.1.3父节点表示法282
11.1.4子节点链表示法286
11.2二叉树290
11.2.1二叉树的定义和基本概念290
11.2.2二叉树的基本操作292
11.2.3二叉树的顺序存储292
11.2.4二叉树的二叉链表存储296
11.2.5二叉树的三叉链表存储299
11.3遍历二叉树303
11.3.1先序遍历303
11.3.2中序遍历304
11.3.3后序遍历304
11.3.4广度优先(按层)遍历305
11.4森林、树和二叉树的转换306
11.4.1森林、树和二叉树的转换306
11.4.2树的链表存储307
11.5哈夫曼树307
11.5.1哈夫曼树的定义和基本概念307
11.5.2创建哈夫曼树308
11.5.3哈夫曼编码311
11.6排序二叉树312
11.7红黑树319
11.7.1插入操作321
11.7.2删除操作322
11.8小结332
第12课常用的内部排序333
12.1排序的基本概念334
12.1.1排序概述334
12.1.2内部排序的分类335
12.2选择排序法335
12.2.1直接选择排序335
12.2.2堆排序339
12.3交换排序343
12.3.1冒泡排序343
12.3.2快速排序345
12.4插入排序347
12.4.1直接插入排序347
12.4.2折半插入排序349
12.4.3Shell排序351
12.5归并排序353
12.6桶式排序357
12.7基数排序359
12.8小结362
第13课程序开发363
13.1扎实的基本功364
13.1.1快速的输入能力364
13.1.2编程实现能力365
13.1.3快速排错366
13.2程序开发之前366
13.2.1分析软件的组件模型366
13.2.2建立软件的数据模型369
13.3弄清程序的具体实现370
13.3.1各组件如何通信370
13.3.2人机交互的实现372
13.3.3复杂算法的分析374
13.4编写开发文档377
13.4.1绘制建模图、流程图377
13.4.2提供简要说明378
13.4.3编写伪码实现379
13.5编码实现和开发心态379
13.5.1开发是复杂的379
13.5.2开发过程是漫长的380
13.6小结380
第14课程序调试381
14.1程序的可调试性382
14.1.1增加注释382
14.1.2使用log382
14.2程序调试的基本方法390
14.2.1借助编译器的代码审查390
14.2.2跟踪程序执行流程392
14.2.3断点调试394
14.2.4隔离调试395
14.2.5错误重现397
14.3记录常见错误398
14.3.1常见异常可能的错误原因399
14.3.2常见运行时异常可能的错误原因400
14.4程序调试的整体思路402
14.4.1分段调试402
14.4.2分模块调试403
14.5调试心态403
14.5.1谁都会出错403
14.5.2调试比写程序更费时404
14.6小结404
第15课使用IDE工具405
15.1何时开始利用IDE工具406
15.2IDE工具概述407
15.2.1IDE工具的基本功能407
15.2.2常见的JavaIDE工具409
15.3项目管理412
15.3.1建立项目412
15.3.2自动编译416
15.3.3自动部署、运行417
15.4代码管理418
15.4.1向导式的代码生成418
15.4.2代码生成器420
15.4.3代码提示421
15.4.4自动代码补齐422
15.4.5实时错误提示422
15.5项目调试423
15.5.1设置断点424
15.5.2单步调试426
15.5.3步入、步出426
15.6团队协作功能427
作为版本控制工具的客户端428
15.7小结431
第16课软件测试433
16.1软件测试概述434
16.1.1软件测试的概念和目的434
16.1.2软件测试的分类436
16.1.3开发活动和测试活动436
16.1.4常见Bug管理工具437
16.2单元测试438
16.2.1单元测试概述438
16.2.2单元测试的逻辑覆盖439
16.2.3JUnit介绍442
16.2.4JUnit的用法443
16.3系统测试和自动化测试448
16.3.1系统测试概述448
16.3.2自动化测试449
16.3.3常见自动化测试工具450
16.4性能测试451
16.4.1性能测试概述451
16.4.2性能测试的相关概念452
16.4.3常见性能测试工具453
16.5小结453
点击展开
点击收起
— 没有更多了 —
以下为对购买帮助不大的评价