• Java编程思想(第2版)
  • Java编程思想(第2版)
  • Java编程思想(第2版)
  • Java编程思想(第2版)
21年品牌 40万+商家 超1.5亿件商品

Java编程思想(第2版)

正版实拍内页无笔记划线

13 1.3折 99 九品

仅1件

河南信阳
认证卖家担保交易快速发货售后保障

作者[美]埃克尔 著;侯捷 译

出版社机械工业出版社

出版时间2002-09

版次1

装帧平装

货号C-2-4

上书时间2024-11-25

美廉美书店

四年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:九品
图书标准信息
  • 作者 [美]埃克尔 著;侯捷 译
  • 出版社 机械工业出版社
  • 出版时间 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
点击展开 点击收起

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP