Java编程思想(第2版) 附光盘一张
¥
10
1.0折
¥
99
九品
仅1件
作者[美]埃克尔 著;侯捷 译
出版社机械工业出版社
出版时间2002-09
版次1
印刷时间2003-11
印次4
装帧平装
货号10744H
上书时间2024-08-19
商品详情
- 品相描述:九品
图书标准信息
-
作者
[美]埃克尔 著;侯捷 译
-
出版社
机械工业出版社
-
出版时间
2002-09
-
版次
1
-
ISBN
9787111104414
-
定价
99.00元
-
装帧
平装
-
开本
16开
-
纸张
胶版纸
-
页数
809页
-
原版书名
Thinking in Java
-
丛书
计算机科学丛书
- 【内容简介】
-
本书的内容组织、讲授方法、选用示例和附带练习都别具特色。作者根据多年教学实践中发现的问题,通过简练的示例和叙述,阐明了在学习Java中特别容易混淆的诸多概念。与前一版相比,本书不但新增了Java2的语言特性,还根据语言的演变作出了彻底的更新,其中最主要的改变是第9章的群集。本书被多家权威机构评为最佳Java书籍,适合作为各个层次的Java程序员阅读,也可以作为高等院校面向对象程序设计语言及Java语言的教材。
- 【作者简介】
-
BruceEckel《ThinkinginC++》(C++编程思想)作者,该书曾获1995年SoftwareDevelopmentJoltAward最佳书籍大奖。Eckel有20年专业编程经验,并自1986年起教育人们如何撰写面向对象程序,足迹遍及全球,成为一位知名的C++教师和顾问,如今兼涉Java。他是C++标准委员会拥有表决权的成员之一,曾经写过另五本面向对象编程书籍,发表过150篇以上的文章,是多本计算机杂志的专栏作家。Eckel开创SoftwareDevelopmentConference的C++、Java、Python等多项研讨活动。拥有应用物理学学士和计算机工程学硕士学位。侯捷《深入浅出MFC》作者,该书曾获2001中国优秀科技畅销书奖及多家网站读者选择最受欢迎书奖。侯捷有14年专业编程经验,曾任台湾工研院机械所和电通所特约研究员。1991年进入教育领域,范围涵盖Windows系统与编程、C++/Java面向对象技术、泛型技术,讲课足迹遍及全台湾。
- 【目录】
-
出版者的话III
专家指导委员会V
读者回应VI
关于《ThinkinginC++》VIII
题献XIV
译序XV
Java环境设定XIX
综览XXI
序言1
第2版序3
Java24
书附光盘5
简介6
阅读门槛6
学习Java6
目标7
在线说明文档(Onlinedocumentation)8
章节组织8
习题13
多媒体光盘(MultimediaCDROM)13
源代码(Sourcecode)14
编码标准(Codingstandards)15
Java版本15
培训课程与顾问指导16
关于错误16
封面故事16
致谢17
Internet上的贡献者19
第1章对象导论20
抽象化的过程20
每个对象都有接口22
被隐藏的实现细节24
重复运用实现码25
继承:重复运用接口26
是一个(is-a)vs.像是一个(is-like-a)29
随多态而生的可互换对象30
抽象基类与接口33
对象的形貌与寿命33
群集和迭代器34
单根继承体系36
群集类库及其易用性支持37
管家面临的两难:谁该负责清理?38
异常处理:面对错误的发生39
多线程39
持久性40
Java与Internet(网际网、互联网)41
Web是什么?41
客户端程序开发42
服务端程序开发47
另一个截然不同的战场:
应用系统48
分析与设计48
阶段0:策划50
阶段1:建立什么?51
阶段2:如何建立?53
阶段3:打造核心56
阶段4:usecases的迭代57
阶段5:演化58
取得成功59
Extremeprogramming(XP)59
测试优先60
搭档设计61
Java为什么成功62
易于表达、易于理解的系统62
通过程序库(libraries)发挥
最大杠杆效应62
错误处理62
大型程序设计62
过渡策略63
实践准则63
管理上的障碍64
Javavs.C++?66
摘要67
第2章万事万物皆对象69
Reference是操控对象之钥匙69
所有对象都必须由你建立70
存储在哪里70
特例:基本型别(primitivetypes)71
Java中的数组(array)73
你再也不需要摧毁对象73
生存空间(Scoping)74
对象的生存空间74
建立新的数据型别:class75
数据成员(fields)和
函数(methods)76
函数(methods),引数(arguments),
返回值(returnvalues)77
引数列(Theargumentlist)78
打造一个Java程序79
名称的可视性(Namevisibility)79
使用其他组件(Component)80
关键字static81
初试啼声:你的第一个Java程序82
编译与执行
(Compilingandrunning)84
注解及内嵌式文档85
寓文档于注解85
语法86
内嵌的HTML86
@see:参考其他classes87
Class(类)文档所用的标签87
Variable(变量)文档所用的标签88
Method(函数)文档所用的标签88
文档制作示例89
编码风格(Codingstyle)90
摘要90
练习90
第3章控制程序流程92
使用Java运算符(operators)92
优先序(Precedence)92
赋值、指派(Assignment)93
数学运算符
(Mathematicaloperators)95
递增(increment)和递减
(decrement)97
关系运算符(Relationaloperators)98
逻辑运算符(Logicaloperators)99
位运算符(Bitwiseoperators)102
位移运算符(Shiftoperators)102
if-else三元运算符(Ternaryif-elseoperator)106
逗号运算符(commaoperator)107
应用于String身上的operator+107
使用运算符时的常犯错误107
转型运算符(Castingoperators)108
Java没有“sizeof”运算符110
再探优先序(Precedence)111
运算符综合说明111
流程控制120
true和false120
if-else120
return121
迭代(iteration)121
do-while122
for122
break和continue124
switch129
摘要133
练习133
第4章初始化和清理134
以构造函数(constructor)确保
初始化的进行134
函数重载(methodoverloading)136
区分重载函数138
搭配基本型别(Primitives)
进行重载138
以返回值(returnvalue)作为重载
的基准142
Default构造函数142
关键字this143
清理(Cleanup):终结(finalization)
与垃圾回收(garbagecollection)146
finalize()存在是为了什么?147
你必须执行清理(cleanup)动作147
死亡条件(Thedeathcondition)150
垃圾回收器(garbagecollector)
的运作方式152
成员初始化(Memberinitialization)154
指定初值156
以构造函数(Constructor)进行
初始化动作157
Array的初始化163
多维(Multidimensional)arrays167
摘要169
练习170
第5章隐藏实现细目172
package:程序库单元(Libraryunit)172
独一无二的package命名174
自订一个程序库177
利用imports来改变行为178
使用package时的一些忠告180
Java访问权限饰词(accessspecifiers)180
“Friendly”(友善的)180
public:接口访问(interfaceaccess)181
private:不要碰我!183
protected:几分友善184
Interface(接口)与implementation
(实现)185
Class的访问权限186
摘要189
练习190
第6章重复运用Classes192
组合(Composition)语法192
继承(Inheritance)语法195
baseclass的初始化197
兼容组合(composition)及继承(inheritance)199
保证适当清理200
名称遮蔽(Namehiding)203
组合与继承之间的抉择204
protected(受保护的)205
渐进式开发
(Incrementalderelopment)206
向上转型(Upcasting)207
为什么需要向上转型
(Why“upcasting”)?207
关键字final208
Finaldata209
Finalmethods212
Finalclasses214
最后的告诫215
初始化以及class的装载215
继承与初始化216
摘要217
练习218
第7章多态220
再探向上转型(Upcasting)220
将对象的型别忘掉221
窍门223
Method-call(函数调用)绑定方式223
产生正确的行为224
扩充性(Extensibility)226
覆写(overriding)vs.重载
(overloading)229
Abstractclasses(抽象类)和abstractmethods(抽象函数)230
构造函数(Constructors)和
多态(polymorphism)234
构造函数调用顺序
(orderofconstructorcalls)234
继承与finalize()236
polymorphicmethods
在构造函数中的行为239
将继承(inheritance)运用于设计241
纯粹继承(Pureinheritance)
vs.扩充(extension)242
向下转型(downcasting)与执行期型别
辨识(run-timetypeidentification)243
摘要245
练习246
第8章接口与内隐类248
Interfaces(接口)248
Java的多重继承
(multipleinheritanceinJava)251
通过继承来扩充interface254
产生常量群(groupingconstants)255
将interfaces内的数据成员初始化256
嵌套的(nesting)interfaces257
Innerclasses(内隐类)260
Innerclasses(内隐类)与
upcasting(向上转型)261
位于methods和scopes之内的
innerclasses(内隐类)263
匿名的
(anonymous)innerclasses265
与外围(outer)class的连接关系268
staticinnerclasses(静态内隐类)270
取用(referring)outerclass的对象272
从多层嵌套class向外伸展触角273
继承innerclasses273
innerclasses可被覆写
(overridden)吗?274
Innerclass的标识符(identifiers)276
为什么需要innerclasses?277
Innerclasses和controlframeworks281
摘要287
练习287
第9章持有你的对象291
Arrays(数组)291
Arrays是第一级对象
(first-classobjects)292
返回一个array295
Arraysclass297
array的充填(filling)306
array的复制307
arrays的比较308
array元素的比较309
array的排序312
在已排序的array中进行查找313
array总结315
容器(containers)简介315
容器的打印316
容器的充填317
容器的缺点:元素型别未定323
有时候它总是可以运作325
制作一个具有型别意识(type-conscious)
的ArrayList326
迭代器(Iterators)327
容器分类学(Containertaxonomy)330
Collection的机能333
List的机能335
根据LinkedList制作一个stack338
根据LinkedList制作一个queue339
Set的机能340
SortedSet342
Map的机能343
SortedMap346
Hashing和hashcodes347
覆写hashCode()354
持有references356
WeakHashMap358
再论Iterators(迭代器)360
选择一份适当的实现品361
在各种Lists之间抉择361
在各种Sets之间抉择364
在各种Maps之间抉择366
Lists的排序和查找368
公用函数(Utilities)369
让Collection或Map无法被更改369
Collection或Map的同步控制370
未获支持的操作
(Unsupportedoperations)371
Java1.0/1.1的容器373
Vector和Enumeration374
Hashtable375
Stack375
BitSet376
摘要377
练习378
第10章通过异常处理错误382
基本异常383
异常引数(Exceptionarguments)383
异常的捕捉(Catching)384
tryblock384
异常处理函数(Exceptionhandlers)385
编写你自己的异常类386
异常规格(exceptionspecification)389
捕捉所有异常390
重掷(Rethrowing)异常392
Java标准异常395
RuntimeException的特殊情况395
以finally进行清理(cleanup)397
为什么需要finally?398
缺憾:异常遗失(theloseexception)400
异常的局限性(Exceptionrestrictions)401
构造函数(Constructor)404
异常的比对(matching)407
异常的使用原则
(Exceptionguidelines)408
摘要409
练习409
第11章JavaI/O系统412
Fileclass412
目录列示器(adirectorylister)412
目录的检查和建立416
输入(Input)和输出(Output)418
InputStream的类型418
OutputStream的类型419
附加属性(attributes)和有用接口420
通过FilterInputStream自InputStream
读取数据421
通过FilterOutputStream将数据写入OutputStream421
Readers和Writers422
数据的来源(sources)和
去处(sinks)423
改变stream的行为424
未曾有任何变化的classes425
RandomAccessFile425
I/Ostreams的典型运用426
Inputstreams428
Outputstreams430
这是个臭虫吗?431
管线化的(piped)streams432
标准I/O432
读取标准输入432
将System.out转换为PrintWriter433
标准I/O重导向(Redirecting)434
压缩435
运用GZIP进行单纯压缩435
运用Zip存储多份文件数据436
JavaARchives(JARs)438
对象次第读写(Objectserialization)440
找出class444
控制次第读写(serialization)445
使用对象持久机制(persistence)453
被语汇单元化(Tokenizing)的
输入动作459
StreamTokenizer459
StringTokenizer462
检验大小写464
摘要471
练习472
第12章执行期型别辨识474
为什么需要RTTI474
Class对象476
转型之前先检查478
RTTI语法485
Reflection(映像):执行期的类信息
(run-timeclassinformation)487
实现一个函数提取器(extractor)489
摘要493
练习494
第13章制作窗口和applet496
基本的applet498
applet的束缚(restrictions)498
applet的优点498
应用程序框架
(Applicationframeworks)499
在Web浏览器上执行applets500
运用Appletviewer501
测试applets502
从命令行(Commandline)
执行applets503
一个显示框架
(Adisplayframework)504
运用WindowsExplorer507
制作一个按钮507
捕捉一个事件(Capturinganevent)508
文本区(Textareas)511
控制版面布局(Controllinglayout)512
BorderLayout513
FlowLayout514
GridLayout514
GridBagLayout515
绝对定位515
BoxLayout515
最好的方法是什么?519
Swing的事件模型(eventmodel)519
事件(event)及监听器(listener)
的种类520
追踪多种事件525
Swing组件一览528
按钮(Buttons)528
图示(Icons)531
工具提示(Tooltips)533
文本块(Textfields)533
边框(Borders)535
JScrollPanes536
迷你文本编辑器(mini-editor)538
复选框(Checkboxes)539
单选按钮(Radiobuttons)540
组合框Comboboxes(下拉式列表
drop-downlists)541
列表框(Listboxes)542
页签式嵌板(Tabbedpanes)544
消息框(Messageboxes)545
菜单(Menus)547
弹出式菜单(Pop-upmenus)552
绘图(Drawing)553
对话框(DialogBoxes)556
文件对话框(Filedialogs)560
Swing组件上的HTML562
滑块(Sliders)和进度指示器
(progressbars)562
树状组件(Trees)563
表格(Tables)566
选择外观风格
(SelectingLook&Feel)567
剪贴板(clipboard)569
将applet封装于JAR文件572
编程技术572
动态绑定事件
(Bindingeventsdynamically)573
将businesslogic和用户界面
logic隔离574
标准型式577
视觉化程序设计(Visualprogramming)
与Beans577
什么是Bean?578
运用Introspector提取出BeanInfo580
一个更为复杂精巧的Bean585
Bean的包装(PackagingaBean)588
Bean所支持的更复杂功能590
其他590
摘要591
练习591
第14章多线程594
反应灵敏的用户界面594
继承自Thread596
运用线程打造出反应灵敏的
用户界面598
结合线程和程序主类600
产生多个线程602
Daemon线程604
共享有限资源606
不当的资源访问606
Java如何共享资源610
再探JavaBeans614
停滞(阻塞,Blocking)618
转为停滞状态(Becomingblocked)619
死锁(Deadlock)628
优先权(Priorities)632
优先权的读取和设定632
线程群组(Threadgroups)636
再探Runnable642
过多的线程645
摘要647
练习649
第15章分布式计算651
网络编程652
机器的识别652
Sockets(插座)655
服务多个客户660
数据元(Datagrams)665
在applet中使用URL665
更多的网络相关信息667
JDBC,Java数据库连接机制668
让本节示例正常运作670
一个GUI版的查询程序673
为什么JDBCAPI看起来如此复杂676
一个更复杂的示例676
Servlets683
Servlet基本教练684
Servlets和多线程(multithreading)687
以servlets处理sessions688
执行servlet示例程序691
JavaServerPages(JSP)692
隐式对象(Implicitobjects)693
JSP指令(directives)693
JSP的脚本描述成分
(scriptingelements)694
取出字段(fields)和数值(values)696
JSP的页面属性(pageattributes)和
有效范围(scope)697
处理JSP中的sessions698
产生并修改cookies699
JSP摘要700
RMI(RemoteMethodInvocation,
远端函数调用)701
远端接口(Remoteinterfaces)701
实现出远端接口(remoteinterface)702
产生stubs和skeletons704
使用远端对象(remoteobject)705
CORBA706
CORBA的基本原理706
一个示例708
JavaApplets和CORBA712
CORBAvs.RMI712
Enterprise(企业级)JavaBeans713
JavaBeansvs.EJBs714
EJB规格714
EJB组件714
EJB组件成分715
EJB的各项操作716
EJBs的类型717
分发(Developing)EJB718
EJB摘要722
Jini:分布式服务(distributedserrices)722
Jini的来龙去脉722
什么是Jini?723
Jini如何运作723
discovery动作724
join动作724
lookup动作725
接口和实现的分离725
将分布式系统抽象化726
摘要726
练习727
附录A对象的传递和返回729
reference的传递729
别名(Aliasing)730
制作一个局域性副本(localcopies)731
Passbyvalue(传值)732
对象的克隆(Cloningobjects)733
赋予class克隆能力(cloneability)734
成功的克隆736
Object.clone()的效应738
克隆一个组合对象
(composedobject)739
对ArrayList进行深层拷贝741
通过serialization进行深层拷贝743
将克隆能力加到继承体系的更下层745
为什么要有这种奇怪的设计?746
克隆能力(cloneability)的控制746
copy构造函数750
唯读类(Read-onlyclasses)754
编写一个唯读类(read-onlyclasses)755
恒常性(immutability)的缺点756
恒常不变的Strings758
String和StringBuffer760
Strings是特殊的东西763
摘要763
练习764
附录BJava原生接口765
原生函数(Nativemethod)的调用765
头文件产生器:javah766
名称重整(Namemangling)与函数
标记(functionsignatures)767
实现出你自己的DLL767
取用JNI函数:通过JNIEnv引数768
访问JavaStrings769
传递和运用Java对象769
JNI和Java异常771
JNI和多线程(threading)772
使用既有的程序代码772
补充信息773
附录CJava编程准则774
设计774
实现(Implementation)778
附录D资源783
软件783
书籍783
分析&设计784
Python786
我的著作786
索引788
点击展开
点击收起
— 没有更多了 —
以下为对购买帮助不大的评价