Java编程思想(第2版)

Java编程思想(第2版)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] ,
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
  • 内容简介:
      本书的内容组织、讲授方法、选用示例和附带练习都别具特色。作者根据多年教学实践中发现的问题,通过简练的示例和叙述,阐明了在学习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
查看详情
系列丛书 / 更多
Java编程思想(第2版)
Java编程思想(第4版)
[美]Bruce Eckel 著;陈昊鹏 译
Java编程思想(第2版)
数据挖掘:概念与技术(原书第3版)
[美]Jiawei、[美]Micheling、[美]Jian Pei 著;范明、孟小峰 译
Java编程思想(第2版)
算法导论(原书第3版)
[美]Thomas、[美]Charles、[美]Ronald、[美]Clifford Stein 著;殷建平、徐云、王刚 译
Java编程思想(第2版)
C程序设计语言(第二版)
[美]Brian(布莱恩·克尼汉)、[美]Dennis M.Ritchie(丹尼斯·里奇) 著;徐宝文、李志 译
Java编程思想(第2版)
深入理解计算机系统(原书第3版)
[美]兰德尔 E.布莱恩特(Randal E.·Bryant) 著;龚奕利、贺莲 译
Java编程思想(第2版)
数据结构与算法分析:Java语言描述
[美]马克·艾伦·维斯 著;陈越 译
Java编程思想(第2版)
编译原理:原理、技术与工具
[美]阿霍 著;赵建华 译
Java编程思想(第2版)
计算机科学导论:原书第3版
[美]Behrouz Forouzan 著;刘艺 译
Java编程思想(第2版)
计算机组成与设计(原书第5版):硬件/软件接口
[美]戴维A.帕特森、[美]约翰 L. 亨尼斯 著;王党辉、康继昌、安建峰 译
Java编程思想(第2版)
Java语言程序设计(基础篇 原书第10版)
[美]梁勇(Y.Daniel Liang) 著;Y.DanielLiang 编;戴开宇 译
Java编程思想(第2版)
软件工程:实践者的研究方法(原书第8版 本科教学版)
[美]罗杰 S. 普莱斯曼 著;郑人杰、马素霞 译
Java编程思想(第2版)
TCP/IP详解 卷2:实现
[美]赖特(Wright) 著
相关图书 / 更多
Java编程思想(第2版)
JavaEE互联网轻量级框架整合开发:SSM+Redis+Spring微服务(上下册)
杨开振 著
Java编程思想(第2版)
Java项目案例开发入门(微课视频版)
于立萍;楚旺
Java编程思想(第2版)
Java Web应用开发基础
牛德雄 著
Java编程思想(第2版)
JavaWeb应用开发
高晓琴 著;高晓琴、黄铭、罗运 编
Java编程思想(第2版)
Java 高级框架应用开发与项目案例教程 –Struts+Spring+Hibernate
梁立新
Java编程思想(第2版)
Java程序设计案例教程
刘志刚 著
Java编程思想(第2版)
Java程序设计(第2版) ——增量式项目驱动一体化教程
陈海山
Java编程思想(第2版)
JavaScript悟道
[美]道格拉斯·克罗克福德(Douglas Crockford) 著;死月(朱凯迪) 译
Java编程思想(第2版)
Java程序设计案例教程
邢海燕、陈静、卜令瑞 编
Java编程思想(第2版)
JavaEE程序设计
张道海 著
Java编程思想(第2版)
Java代码审计入门篇
徐焱 著
Java编程思想(第2版)
Java2实用教程(第6版)()
耿祥义、张跃平 著
您可能感兴趣 / 更多
Java编程思想(第2版)
觉醒领导者:解锁领导他人的7个秘密
[美]约翰·马托尼(John Mattone) 著;林菲 译
Java编程思想(第2版)
创业者的自我修养
[美]约翰·丹纳 著;[美]克里斯·曲恩、王沫涵 译
Java编程思想(第2版)
学会夸自己:用一种不被讨厌的方式,大胆推销自己
[美]梅雷迪思·法恩曼 著;张淼 译
Java编程思想(第2版)
投资组合再平衡:应用量化分析增强投资组合收益
[美]钱恩平(Edward E.Qian) 著;李腾 译
Java编程思想(第2版)
莎士比亚的政治智慧
[美]伯恩斯(Timothy W.Burns) 著;甘阳 编;袁鹏 译;刘小枫、张霄 校
Java编程思想(第2版)
成为极简主义者:7个让你更自由的极简生活法则
[美]乔舒亚·贝克尔(Joshua Becker) 著;池明烨 译
Java编程思想(第2版)
物联网系统架构设计与边缘计算(原书第2版)
[美]佩里·利(Perry Lea) 著;中国移动设计院北京分院 译
Java编程思想(第2版)
亲子关系游戏治疗:10单元循证亲子治疗模式(第2版)
[美]加里·L.兰德雷斯、休·C.布拉顿 著
Java编程思想(第2版)
人格心理学:理论与研究(第13版)
[美]劳伦斯·佩文(Lawrence A.Pervin) 编;[美]丹尼尔·瑟沃恩(Daniel Cervone)、许燕 译
Java编程思想(第2版)
教练的商业思维
[美]艾伦·韦斯 著;李海峰、曲十三、张智豪 译
Java编程思想(第2版)
野性与温情:动物父母的自我修养(自然文库)
[美]珍妮弗·L.沃多琳(Jennifer L.Verdolin) 著;李玉珊 译
Java编程思想(第2版)
微创脊柱外科学:手术技术与疾病治疗(原书第2版)
[美]Frank M. Phillips Isador H. Lieberman(美) 著;张雪松 陈雄生 初同伟 周许辉 译