Java編程思想

出版時(shí)間:2002-9  出版社:機(jī)械工業(yè)出版社  作者:[美] Bruce Eckel  頁(yè)數(shù):809  譯者:侯捷  
Tag標(biāo)簽:無(wú)  

內(nèi)容概要

本書(shū)的內(nèi)容組織、講授方法、選用示例和附帶練習(xí)都別具特色。作者根據(jù)多年教學(xué)實(shí)踐中發(fā)現(xiàn)的問(wèn)題,通過(guò)簡(jiǎn)練的示例和敘述,闡明了在學(xué)習(xí)Java中特別容易混淆的諸多概念。與前一版相比,本書(shū)不但新增了Java2的語(yǔ)言特性,還根據(jù)語(yǔ)言的演變作出了徹底的更新,其中最主要的改變是第9章的群集。
本書(shū)被多家權(quán)威機(jī)構(gòu)評(píng)為最佳Java書(shū)籍,適合作為各個(gè)層次的Java程序員閱讀,也可以作為高等院校面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言及Java語(yǔ)言的教材。

作者簡(jiǎn)介

Bruce Eckel    《Thinking in C++》(C++編程思想)作者,該書(shū)曾獲1995年Software Development Jolt Award最佳書(shū)籍大獎(jiǎng)。Eckel有20年專業(yè)編程經(jīng)驗(yàn),并自1986年起教育人們?nèi)绾巫珜?xiě)面向?qū)ο蟪绦颍阚E遍及全球,成為一位知名的C++教師和顧問(wèn),如今兼涉Java。他是C++標(biāo)準(zhǔn)委

書(shū)籍目錄

出版者的話 III
專家指導(dǎo)委員會(huì) V
讀者回應(yīng) VI
關(guān)于《Thinking in C++》 VIII
題獻(xiàn) XIV
譯序 XV
Java環(huán)境設(shè)定 XIX
綜覽 XXI
序言 1
第2版序 3
Java 2 4
書(shū)附光盤(pán) 5
簡(jiǎn)介 6
閱讀門(mén)檻 6
學(xué)習(xí)Java 6
目標(biāo) 7
在線說(shuō)明文檔(Online documentation) 8
章節(jié)組織 8
習(xí)題 13
多媒體光盤(pán)(Multimedia CD ROM) 13
源代碼(Source code) 14
編碼標(biāo)準(zhǔn)(Coding standards) 15
Java版本 15
培訓(xùn)課程與顧問(wèn)指導(dǎo) 16
關(guān)于錯(cuò)誤 16
封面故事 16
致謝 17
Internet上的貢獻(xiàn)者 19
第1章 對(duì)象導(dǎo)論 20
抽象化的過(guò)程 20
每個(gè)對(duì)象都有接口 22
被隱藏的實(shí)現(xiàn)細(xì)節(jié) 24
重復(fù)運(yùn)用實(shí)現(xiàn)碼 25
繼承:重復(fù)運(yùn)用接口 26
是一個(gè)(is-a)vs. 像是一個(gè)(is-like-a) 29
隨多態(tài)而生的可互換對(duì)象 30
抽象基類與接口 33
對(duì)象的形貌與壽命 33
群集和迭代器 34
單根繼承體系 36
群集類庫(kù)及其易用性支持 37
管家面臨的兩難:誰(shuí)該負(fù)責(zé)清理? 38
異常處理:面對(duì)錯(cuò)誤的發(fā)生 39
多線程 39
持久性 40
Java與Internet(網(wǎng)際網(wǎng)、互聯(lián)網(wǎng)) 41
Web是什么? 41
客戶端程序開(kāi)發(fā) 42
服務(wù)端程序開(kāi)發(fā) 47
另一個(gè)截然不同的戰(zhàn)場(chǎng):
應(yīng)用系統(tǒng) 48
分析與設(shè)計(jì) 48
階段0:策劃 50
階段1:建立什么? 51
階段2:如何建立? 53
階段3:打造核心 56
階段4:use cases的迭代 57
階段5:演化 58
取得成功 59
Extreme programming(XP) 59
測(cè)試優(yōu)先 60
搭檔設(shè)計(jì) 61
Java為什么成功 62
易于表達(dá)、易于理解的系統(tǒng) 62
通過(guò)程序庫(kù)(libraries)發(fā)揮
最大杠桿效應(yīng) 62
錯(cuò)誤處理 62
大型程序設(shè)計(jì) 62
過(guò)渡策略 63
實(shí)踐準(zhǔn)則 63
管理上的障礙 64
Java vs. C++? 66
摘要 67
第2章 萬(wàn)事萬(wàn)物皆對(duì)象 69
Reference是操控對(duì)象之鑰匙 69
所有對(duì)象都必須由你建立 70
存儲(chǔ)在哪里 70
特例:基本型別(primitive types) 71
Java中的數(shù)組(array) 73
你再也不需要摧毀對(duì)象 73
生存空間(Scoping) 74
對(duì)象的生存空間 74
建立新的數(shù)據(jù)型別:class 75
數(shù)據(jù)成員(fields)和
函數(shù)(methods) 76
函數(shù)(methods),引數(shù)(arguments),
返回值(return values) 77
引數(shù)列(The argument list) 78
打造一個(gè) Java 程序 79
名稱的可視性(Name visibility) 79
使用其他組件(Component) 80
關(guān)鍵字static 81
初試啼聲:你的第一個(gè) Java程序 82
編譯與執(zhí)行
(Compiling and running) 84
注解及內(nèi)嵌式文檔 85
寓文檔于注解 85
語(yǔ)法 86
內(nèi)嵌的 HTML 86
@see:參考其他classes 87
Class(類)文檔所用的標(biāo)簽 87
Variable(變量)文檔所用的標(biāo)簽 88
Method(函數(shù))文檔所用的標(biāo)簽 88
文檔制作示例 89
編碼風(fēng)格(Coding style) 90
摘要 90
練習(xí) 90
第3章 控制程序流程 92
使用Java運(yùn)算符(operators) 92
優(yōu)先序(Precedence) 92
賦值、指派(Assignment) 93
數(shù)學(xué)運(yùn)算符
(Mathematical operators) 95
遞增(increment)和遞減
(decrement) 97
關(guān)系運(yùn)算符(Relational operators) 98
邏輯運(yùn)算符(Logical operators) 99
位運(yùn)算符(Bitwise operators) 102
位移運(yùn)算符(Shift operators) 102
if-else 三元運(yùn)算符(Ternary if-else operator) 106
逗號(hào)運(yùn)算符(comma operator) 107
應(yīng)用于String身上的operator + 107
使用運(yùn)算符時(shí)的常犯錯(cuò)誤 107
轉(zhuǎn)型運(yùn)算符(Casting operators) 108
Java 沒(méi)有“sizeof” 運(yùn)算符 110
再探優(yōu)先序(Precedence) 111
運(yùn)算符綜合說(shuō)明 111
流程控制 120
true 和 false 120
if-else 120
return 121
迭代(iteration) 121
do-while 122
for 122
break 和 continue 124
switch 129
摘要 133
練習(xí) 133
第4章 初始化和清理 134
以構(gòu)造函數(shù)(constructor)確保
初始化的進(jìn)行 134
函數(shù)重載(method overloading) 136
區(qū)分重載函數(shù) 138
搭配基本型別(Primitives)
進(jìn)行重載 138
以返回值(return value)作為重載
的基準(zhǔn) 142
Default構(gòu)造函數(shù) 142
關(guān)鍵字this 143
清理(Cleanup):終結(jié)(finalization)
與垃圾回收(garbage collection) 146
finalize( ) 存在是為了什么? 147
你必須執(zhí)行清理(cleanup)動(dòng)作 147
死亡條件(The death condition) 150
垃圾回收器(garbage collector)
的運(yùn)作方式 152
成員初始化(Member initialization) 154
指定初值 156
以構(gòu)造函數(shù)(Constructor)進(jìn)行
初始化動(dòng)作 157
Array 的初始化 163
多維(Multidimensional)arrays 167
摘要 169
練習(xí) 170
第5章 隱藏實(shí)現(xiàn)細(xì)目 172
package: 程序庫(kù)單元(Library unit) 172
獨(dú)一無(wú)二的package 命名 174
自訂一個(gè)程序庫(kù) 177
利用 imports 來(lái)改變行為 178
使用package時(shí)的一些忠告 180
Java訪問(wèn)權(quán)限飾詞(access specifiers) 180
“Friendly”(友善的) 180
public: 接口訪問(wèn)(interface access) 181
private: 不要碰我! 183
protected: 幾分友善 184
Interface(接口)與implementation
(實(shí)現(xiàn)) 185
Class的訪問(wèn)權(quán)限 186
摘要 189
練習(xí) 190
第6章 重復(fù)運(yùn)用Classes 192
組合(Composition)語(yǔ)法 192
繼承(Inheritance)語(yǔ)法 195
base class的初始化 197
兼容組合(composition)及繼承(inheritance) 199
保證適當(dāng)清理 200
名稱遮蔽(Name hiding) 203
組合與繼承之間的抉擇 204
protected(受保護(hù)的) 205
漸進(jìn)式開(kāi)發(fā)
(Incremental derelopment) 206
向上轉(zhuǎn)型(Upcasting) 207
為什么需要向上轉(zhuǎn)型
(Why“upcasting”)? 207
關(guān)鍵字final 208
Final data 209
Final methods 212
Final classes 214
最后的告誡 215
初始化以及class 的裝載 215
繼承與初始化 216
摘要 217
練習(xí) 218
第7章 多態(tài) 220
再探向上轉(zhuǎn)型(Upcasting) 220
將對(duì)象的型別忘掉 221
竅門(mén) 223
Method-call(函數(shù)調(diào)用)綁定方式 223
產(chǎn)生正確的行為 224
擴(kuò)充性(Extensibility) 226
覆寫(xiě)(overriding)vs. 重載
(overloading) 229
Abstract classes(抽象類)和abstract methods(抽象函數(shù)) 230
構(gòu)造函數(shù)(Constructors)和
多態(tài)(polymorphism) 234
構(gòu)造函數(shù)調(diào)用順序
(order of constructor calls) 234
繼承與finalize( ) 236
polymorphic methods
在構(gòu)造函數(shù)中的行為 239
將繼承(inheritance)運(yùn)用于設(shè)計(jì) 241
純粹繼承(Pure inheritance)
vs. 擴(kuò)充(extension) 242
向下轉(zhuǎn)型(downcasting)與執(zhí)行期型別
辨識(shí)(run-time type identification) 243
摘要 245
練習(xí) 246
第8章 接口與內(nèi)隱類 248
Interfaces(接口) 248
Java的多重繼承
(multiple inheritance in Java) 251
通過(guò)繼承來(lái)擴(kuò)充interface 254
產(chǎn)生常量群(grouping constants) 255
將interfaces內(nèi)的數(shù)據(jù)成員初始化 256
嵌套的(nesting)interfaces 257
Inner classes(內(nèi)隱類) 260
Inner classes(內(nèi)隱類)與
upcasting(向上轉(zhuǎn)型) 261
位于methods 和scopes之內(nèi)的
inner classes(內(nèi)隱類) 263
匿名的
(anonymous)inner classes 265
與外圍(outer)class的連接關(guān)系 268
static inner classes(靜態(tài)內(nèi)隱類) 270
取用(referring)outer class的對(duì)象 272
從多層嵌套class向外伸展觸角 273
繼承inner classes 273
inner classes可被覆寫(xiě)
(overridden)嗎? 274
Inner class的標(biāo)識(shí)符(identifiers) 276
為什么需要inner classes? 277
Inner classes和control frameworks 281
摘要 287
練習(xí) 287
第9章 持有你的對(duì)象 291
Arrays(數(shù)組) 291
Arrays是第一級(jí)對(duì)象
(first-class objects) 292
返回一個(gè)array 295
Arrays class 297
array的充填(filling) 306
array的復(fù)制 307
arrays的比較 308
array元素的比較 309
array的排序 312
在已排序的array中進(jìn)行查找 313
array總結(jié) 315
容器(containers)簡(jiǎn)介 315
容器的打印 316
容器的充填 317
容器的缺點(diǎn):元素型別未定 323
有時(shí)候它總是可以運(yùn)作 325
制作一個(gè)具有型別意識(shí)(type-conscious)
的ArrayList 326
迭代器(Iterators) 327
容器分類學(xué)(Container taxonomy) 330
Collection的機(jī)能 333
List的機(jī)能 335
根據(jù)LinkedList制作一個(gè)stack 338
根據(jù)LinkedList制作一個(gè)queue 339
Set的機(jī)能 340
SortedSet 342
Map的機(jī)能 343
SortedMap 346
Hashing和hash codes 347
覆寫(xiě)hashCode( ) 354
持有references 356
WeakHashMap 358
再論Iterators(迭代器) 360
選擇一份適當(dāng)?shù)膶?shí)現(xiàn)品 361
在各種Lists之間抉擇 361
在各種Sets之間抉擇 364
在各種Maps之間抉擇 366
Lists的排序和查找 368
公用函數(shù)(Utilities) 369
讓Collection或Map無(wú)法被更改 369
Collection或Map的同步控制 370
未獲支持的操作
(Unsupported operations) 371
Java 1.0/1.1的容器 373
Vector和Enumeration 374
Hashtable 375
Stack 375
BitSet 376
摘要 377
練習(xí) 378
第10章 通過(guò)異常處理錯(cuò)誤 382
基本異常 383
異常引數(shù)(Exception arguments) 383
異常的捕捉(Catching) 384
try block 384
異常處理函數(shù)(Exception handlers) 385
編寫(xiě)你自己的異常類 386
異常規(guī)格(exception specification) 389
捕捉所有異常 390
重?cái)S(Rethrowing)異常 392
Java標(biāo)準(zhǔn)異常 395
RuntimeException的特殊情況 395
以finally進(jìn)行清理(cleanup) 397
為什么需要finally? 398
缺憾:異常遺失(the lose exception) 400
異常的局限性(Exception restrictions) 401
構(gòu)造函數(shù)(Constructor) 404
異常的比對(duì)(matching) 407
異常的使用原則
(Exception guidelines) 408
摘要 409
練習(xí) 409
第11章 Java I/O 系統(tǒng) 412
File class 412
目錄列示器(a directory lister) 412
目錄的檢查和建立 416
輸入(Input)和輸出(Output) 418
InputStream的類型 418
OutputStream的類型 419
附加屬性(attributes)和有用接口 420
通過(guò)FilterInputStream自InputStream
讀取數(shù)據(jù) 421
通過(guò)FilterOutputStream將數(shù)據(jù)寫(xiě)入OutputStream 421
Readers和Writers 422
數(shù)據(jù)的來(lái)源(sources)和
去處(sinks) 423
改變stream的行為 424
未曾有任何變化的classes 425
RandomAccessFile 425
I/O streams的典型運(yùn)用 426
Input streams 428
Output streams 430
這是個(gè)臭蟲(chóng)嗎? 431
管線化的(piped)streams 432
標(biāo)準(zhǔn)I/O 432
讀取標(biāo)準(zhǔn)輸入 432
將System.out轉(zhuǎn)換為PrintWriter 433
標(biāo)準(zhǔn)I/O重導(dǎo)向(Redirecting) 434
壓縮 435
運(yùn)用GZIP進(jìn)行單純壓縮 435
運(yùn)用Zip存儲(chǔ)多份文件數(shù)據(jù) 436
Java ARchives (JARs) 438
對(duì)象次第讀寫(xiě)(Object serialization) 440
找出class 444
控制次第讀寫(xiě)(serialization) 445
使用對(duì)象持久機(jī)制(persistence) 453
被語(yǔ)匯單元化(Tokenizing)的
輸入動(dòng)作 459
StreamTokenizer 459
StringTokenizer 462
檢驗(yàn)大小寫(xiě) 464
摘要 471
練習(xí) 472
第12章 執(zhí)行期型別辨識(shí) 474
為什么需要RTTI 474
Class 對(duì)象 476
轉(zhuǎn)型之前先檢查 478
RTTI語(yǔ)法 485
Reflection(映像):執(zhí)行期的類信息
(run-time class information) 487
實(shí)現(xiàn)一個(gè)函數(shù)提取器(extractor) 489
摘要 493
練習(xí) 494
第13章 制作窗口和applet 496
基本的applet 498
applet的束縛(restrictions) 498
applet的優(yōu)點(diǎn) 498
應(yīng)用程序框架
(Application frameworks) 499
在Web瀏覽器上執(zhí)行applets 500
運(yùn)用Appletviewer 501
測(cè)試applets 502
從命令行(Command line)
執(zhí)行applets 503
一個(gè)顯示框架
(Adisplay framework) 504
運(yùn)用Windows Explorer 507
制作一個(gè)按鈕 507
捕捉一個(gè)事件(Capturing an event) 508
文本區(qū)(Text areas) 511
控制版面布局(Controlling layout) 512
BorderLayout 513
FlowLayout 514
GridLayout 514
GridBagLayout 515
絕對(duì)定位 515
BoxLayout 515
最好的方法是什么? 519
Swing的事件模型(event model) 519
事件(event)及監(jiān)聽(tīng)器(listener)
的種類 520
追蹤多種事件 525
Swing組件一覽 528
按鈕(Buttons) 528
圖示(Icons) 531
工具提示(Tool tips) 533
文本塊(Text fields) 533
邊框(Borders) 535
JScrollPanes 536
迷你文本編輯器(mini-editor) 538
復(fù)選框(Check boxes) 539
單選按鈕(Radio buttons) 540
組合框Combo boxes(下拉式列表
drop-down lists) 541
列表框(List boxes) 542
頁(yè)簽式嵌板(Tabbed panes) 544
消息框(Message boxes) 545
菜單(Menus) 547
彈出式菜單(Pop-up menus) 552
繪圖(Drawing) 553
對(duì)話框(Dialog Boxes) 556
文件對(duì)話框(File dialogs) 560
Swing 組件上的HTML 562
滑塊(Sliders)和進(jìn)度指示器
(progress bars) 562
樹(shù)狀組件(Trees) 563
表格(Tables) 566
選擇外觀風(fēng)格
(Selecting Look & Feel) 567
剪貼板(clipboard) 569
將applet封裝于JAR文件 572
編程技術(shù) 572
動(dòng)態(tài)綁定事件
(Binding events dynamically) 573
將business logic和用戶界面
logic隔離 574
標(biāo)準(zhǔn)型式 577
視覺(jué)化程序設(shè)計(jì)(Visual programming)
與Beans 577
什么是Bean? 578
運(yùn)用Introspector提取出BeanInfo 580
一個(gè)更為復(fù)雜精巧的Bean 585
Bean的包裝(Packaging a Bean) 588
Bean所支持的更復(fù)雜功能 590
其他 590
摘要 591
練習(xí) 591
第14章 多線程 594
反應(yīng)靈敏的用戶界面 594
繼承自Thread 596
運(yùn)用線程打造出反應(yīng)靈敏的
用戶界面 598
結(jié)合線程和程序主類 600
產(chǎn)生多個(gè)線程 602
Daemon線程 604
共享有限資源 606
不當(dāng)?shù)馁Y源訪問(wèn) 606
Java如何共享資源 610
再探JavaBeans 614
停滯(阻塞,Blocking) 618
轉(zhuǎn)為停滯狀態(tài)(Becoming blocked) 619
死鎖(Deadlock) 628
優(yōu)先權(quán)(Priorities) 632
優(yōu)先權(quán)的讀取和設(shè)定 632
線程群組(Thread groups) 636
再探Runnable 642
過(guò)多的線程 645
摘要 647
練習(xí) 649
第15章 分布式計(jì)算 651
網(wǎng)絡(luò)編程 652
機(jī)器的識(shí)別 652
Sockets(插座) 655
服務(wù)多個(gè)客戶 660
數(shù)據(jù)元(Datagrams) 665
在applet中使用URL 665
更多的網(wǎng)絡(luò)相關(guān)信息 667
JDBC,Java數(shù)據(jù)庫(kù)連接機(jī)制 668
讓本節(jié)示例正常運(yùn)作 670
一個(gè)GUI版的查詢程序 673
為什么JDBC API看起來(lái)如此復(fù)雜 676
一個(gè)更復(fù)雜的示例 676
Servlets 683
Servlet基本教練 684
Servlets和多線程(multithreading) 687
以servlets處理sessions 688
執(zhí)行servlet示例程序 691
Java Server Pages(JSP) 692
隱式對(duì)象(Implicit objects) 693
JSP指令(directives) 693
JSP的腳本描述成分
(scripting elements) 694
取出字段(fields)和數(shù)值(values) 696
JSP的頁(yè)面屬性(page attributes)和
有效范圍(scope) 697
處理JSP中的sessions 698
產(chǎn)生并修改cookies 699
JSP摘要 700
RMI (Remote Method Invocation,
遠(yuǎn)端函數(shù)調(diào)用) 701
遠(yuǎn)端接口(Remote interfaces) 701
實(shí)現(xiàn)出遠(yuǎn)端接口(remote interface) 702
產(chǎn)生stubs和skeletons 704
使用遠(yuǎn)端對(duì)象(remote object) 705
CORBA 706
CORBA的基本原理 706
一個(gè)示例 708
Java Applets和CORBA 712
CORBA vs. RMI 712
Enterprise(企業(yè)級(jí))JavaBeans 713
JavaBeans vs. EJBs 714
EJB規(guī)格 714
EJB組件 714
EJB組件成分 715
EJB的各項(xiàng)操作 716
EJBs的類型 717
分發(fā)(Developing)EJB 718
EJB 摘要 722
Jini: 分布式服務(wù)(distributed serrices) 722
Jini的來(lái)龍去脈 722
什么是Jini? 723
Jini如何運(yùn)作 723
discovery動(dòng)作 724
join動(dòng)作 724
lookup動(dòng)作 725
接口和實(shí)現(xiàn)的分離 725
將分布式系統(tǒng)抽象化 726
摘要 726
練習(xí) 727
附錄A 對(duì)象的傳遞和返回 729
reference的傳遞 729
別名(Aliasing) 730
制作一個(gè)局域性副本(local copies) 731
Pass by value(傳值) 732
對(duì)象的克?。–loning objects) 733
賦予class克隆能力(cloneability) 734
成功的克隆 736
Object.clone( ) 的效應(yīng) 738
克隆一個(gè)組合對(duì)象
(composed object) 739
對(duì)ArrayList進(jìn)行深層拷貝 741
通過(guò)serialization進(jìn)行深層拷貝 743
將克隆能力加到繼承體系的更下層 745
為什么要有這種奇怪的設(shè)計(jì)? 746
克隆能力(cloneability)的控制 746
copy構(gòu)造函數(shù) 750
唯讀類(Read-only classes) 754
編寫(xiě)一個(gè)唯讀類(read-only classes) 755
恒常性(immutability)的缺點(diǎn) 756
恒常不變的Strings 758
String和StringBuffer 760
Strings是特殊的東西 763
摘要 763
練習(xí) 764
附錄B Java原生接口 765
原生函數(shù)(Native method)的調(diào)用 765
頭文件產(chǎn)生器:javah 766
名稱重整(Name mangling)與函數(shù)
標(biāo)記(function signatures) 767
實(shí)現(xiàn)出你自己的DLL 767
取用JNI函數(shù): 通過(guò)JNIEnv引數(shù) 768
訪問(wèn)Java Strings 769
傳遞和運(yùn)用Java對(duì)象 769
JNI和Java異常 771
JNI和多線程(threading) 772
使用既有的程序代碼 772
補(bǔ)充信息 773
附錄C Java編程準(zhǔn)則 774
設(shè)計(jì) 774
實(shí)現(xiàn)(Implementation) 778
附錄D 資源 783
軟件 783
書(shū)籍 783
分析& 設(shè)計(jì) 784
Python 786
我的著作 786
索引 788

圖書(shū)封面

圖書(shū)標(biāo)簽Tags

無(wú)

評(píng)論、評(píng)分、閱讀與下載


    Java編程思想 PDF格式下載


用戶評(píng)論 (總計(jì)3條)

 
 

  •   對(duì)于java程序員來(lái)說(shuō),是一本很不錯(cuò)的書(shū)。初學(xué)最好不要看這本書(shū),等有了一點(diǎn)基礎(chǔ)了再看。
  •   書(shū)寫(xiě)的挺好的。據(jù)說(shuō)比第三版的翻譯要好~,不過(guò)我沒(méi)有看過(guò)第三版的不知道怎么樣??傊€是不錯(cuò)的。
  •   經(jīng)典好書(shū),深入簡(jiǎn)出,學(xué)習(xí)好幫手??!
 

250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7