Thinking in Java (4th Edition) 🔍
Bruce Eckel
Prentice Hall, 4th ed., Upper Saddle River, NJ, New Jersey, 2006
English [en] · PDF · 4.8MB · 2006 · 📘 Book (non-fiction) · 🚀/lgli/lgrs/nexusstc/zlib · Save
description
“Thinking in Java should be read cover to cover by every Java programmer, then kept close at hand for frequent reference. The exercises are challenging, and the chapter on Collections is superb! Not only did this book help me to pass the Sun Certified Java Programmer exam; it’s also the first book I turn to whenever I have a Java question.”—Jim Pleger, Loudoun County (Virginia) Government“Much better than any other Java book I’ve seen. Make that ‘by an order of magnitude’.... Very complete, with excellent right-to-the-point examples and intelligent, not dumbed-down, explanations.... In contrast to many other Java books I found it to be unusually mature, consistent, intellectually honest, well-written, and precise. IMHO, an ideal book for studying Java.”—Anatoly Vorobey, Technion University, Haifa, Israel“Absolutely one of the best programming tutorials I’ve seen for any language.”—Joakim Ziegler, FIX sysop“Thank you again for your awesome book. I was really floundering (being a non-C programmer), but your book has brought me up to speed as fast as I could read it. It’s really cool to be able to understand the underlying principles and concepts from the start, rather than having to try to build that conceptual model through trial and error. Hopefully I will be able to attend your seminar in the not-too-distant future.”—Randall R. Hawley, automation technician, Eli Lilly & Co.“This is one of the best books I’ve read about a programming language.... The best book ever written on Java.”—Ravindra Pai, Oracle Corporation, SUNOS product line“Bruce, your book is wonderful! Your explanations are clear and direct. Through your fantastic book I have gained a tremendous amount of Java knowledge. The exercises are also fantastic and do an excellent job reinforcing the ideas explained throughout the chapters. I look forward to reading more books written by you. Thank you for the tremendous service that you are providing by writing such great books. My code will be much better after reading Thinking in Java. I thank you and I’m sure any programmers who will have to maintain my code are also grateful to you.”—Yvonne Watkins, Java artisan, Discover Technologies, Inc.“Other books cover the what of Java (describing the syntax and the libraries) or the how of Java (practical programming examples). Thinking in Java is the only book I know that explains the why of Java: Why it was designed the way it was, why it works the way it does, why it sometimes doesn’t work, why it’s better than C++, why it’s not. Although it also does a good job of teaching the what and how of the language, Thinking in Java is definitely the thinking person’s choice in a Java book.”—Robert S. StephensonAwards for Thinking in Java2003 Software Development Magazine Jolt Award for Best Book2003 Java Developer’s Journal Reader’s Choice Award for Best Book2001 JavaWorld Editor’s Choice Award for Best Book2000 JavaWorld Reader’s Choice Award for Best Book1999 Software Development Magazine Productivity Award1998 Java Developer’s Journal Editor’s Choice Award for Best BookThinking in Java has earned raves from programmers worldwide for its extraordinary clarity, careful organization, and small, direct programming examples. From the fundamentals of Java syntax to its most advanced features, Thinking in Java is designed to teach, one simple step at a time.The classic object-oriented introduction for beginners and experts alike, fully updated for Java SE5/6 with many new examples and chapters!Test framework shows program output.Design patterns are shown with multiple examples throughout: Adapter, Bridge, Chain of Responsibility, Command, Decorator, Facade, Factory Method, Flyweight, Iterator, Data Transfer Object, Null Object, Proxy, Singleton, State, Strategy, Template Method, and Visitor.Introduction to XML for data transfer; SWT, Flash for user interfaces.Completely rewritten concurrency chapter gives you a solid grasp of threading fundamentals.500+ working Java programs in 700+ compiling files, rewritten for this edition and Java SE5/6.Companion web site includes all source code, annotated solution guide, weblog, and multimedia seminars.Thorough coverage of fundamentals; demonstrates advanced topics.Explains sound object-oriented principles.Hands-On Java Seminar CD available online, with full multimedia seminar by Bruce Eckel.Live seminars, consulting, and reviews available. See www.MindView.netDownload seven free sample chapters from Thinking in Java, Fourth Edition. Visit http://mindview.net/Books/TIJ4.
Alternative filename
lgli/_496956.59224dba18dd9c3808542ae6251c8b8f.pdf
Alternative filename
lgrsnf/_496956.59224dba18dd9c3808542ae6251c8b8f.pdf
Alternative filename
zlib/Computers/Programming/Bruce Eckel/Thinking in Java (4th Edition)_1242063.pdf
Alternative title
Thinking in Java : [the definitive introduction to object-oriented programming in the language of the world wide web ; for Java SE5/6
Alternative title
Философия Java: 16+
Alternative author
Брюс Эккель : [перевел с английского Е. Матвеев]
Alternative author
Eckel, Bruce
Alternative author
Эккель, Брюс
Alternative publisher
Globe Fearon Educational Publishing
Alternative publisher
Longman Publishing
Alternative publisher
Cengage Gale
Alternative publisher
Pearson
Alternative publisher
Питер
Alternative edition
Классика computer science, 4-е полное изд., Санкт-Петербург [и др.], Russia, 2022
Alternative edition
Классика computer science, 4-е полное изд., Москва [и др.], Russia, 2019
Alternative edition
Классика computer science, 4-е полное изд., Москва [и др.], Russia, 2020
Alternative edition
4. ed., 7. print, Upper Saddle River, NJ, 2009
Alternative edition
United States, United States of America
Alternative edition
Fourth Edition, US, 2006
metadata comments
lg804232
metadata comments
{"edition":"4","isbns":["0131872486","9780131872486"],"last_page":1150,"publisher":"Prentice Hall"}
metadata comments
Includes bibliographical references and index.
metadata comments
Библиогр.: с. 1160-1165
Пер.: Eckel, Bruce Thinking in Java 978-0131872486
Пер.: Eckel, Bruce Thinking in Java 978-0131872486
metadata comments
РГБ
metadata comments
Russian State Library [rgb] MARC:
=001 011013906
=005 20220321132909.0
=008 220315s2022\\\\ru\\\\\\\\\\\\000\|\rus|d
=017 \\ $a КН-П-22-016976 $b RuMoRKP
=020 \\ $a 978-5-4461-1107-7
=020 \\ $a 978-0131872486
=040 \\ $a RuMoRKP $b rus $d RuMoRGB
=041 0\ $a rus
=044 \\ $a ru
=080 \\ $a 004.438 $2 4
=084 \\ $a 32.973 $2 rubbks
=084 \\ $a З973.2-018.19Java,0 $2 rubbk
=100 1\ $a Эккель, Брюс
=245 00 $a Философия Java : $b 16+ $c Брюс Эккель ; [перевел с английского Е. Матвеев]
=250 \\ $a 4-е полное изд.
=260 \\ $a Санкт-Петербург [и др.] $b Питер $c 2022 $e Чехов, Московская область
=300 \\ $a 1165 с. $b ил. $c 24 см
=336 \\ $a Текст (визуальный)
=337 \\ $a непосредственный
=490 0\ $a Классика computer science
=504 \\ $a Библиогр.: с. 1160-1165
=520 \\ $a Впервые читатель может познакомиться с полной версией этого классического труда, который ранее на русском языке печатался в сокращении. Книга, выдержавшая в оригинале не одно переиздание, за глубокое и поистине философское изложение тонкостей языка Java считается одним из лучших пособий для программистов. Чтобы по-настоящему понять язык Java, необходимо рассматривать его не просто как набор неких команд и операторов, а понять его "философию", подход к решению задач, в сравнении с таковыми в других языках программирования. На этих страницах автор рассказывает об основных проблемах написания кода: в чем их природа и какой подход использует Java в их разрешении. Поэтому обсуждаемые в каждой главе черты языка неразрывно связаны с тем, как они используются для решения определенных задач
=534 \\ $p Пер.: $a Eckel, Bruce $t Thinking in Java $z 978-0131872486
=650 \7 $a Объектно-ориентированное программирование $2 RuMoRKP
=650 \7 $a Программирования языки объектно-ориентированные $2 RuMoRKP
=650 \7 $a Техника. Технические науки -- Энергетика. Радиоэлектроника -- Вычислительная техника -- Вычислительные машины электронные цифровые -- Языки программирования -- Java $2 rubbk
=700 1\ $a Матвеев, Е. В. $e пер.
=852 \\ $a РГБ $b FB $j 2 22-17/205 $x 90
=852 \\ $a РГБ $b ORF $x 82
=001 011013906
=005 20220321132909.0
=008 220315s2022\\\\ru\\\\\\\\\\\\000\|\rus|d
=017 \\ $a КН-П-22-016976 $b RuMoRKP
=020 \\ $a 978-5-4461-1107-7
=020 \\ $a 978-0131872486
=040 \\ $a RuMoRKP $b rus $d RuMoRGB
=041 0\ $a rus
=044 \\ $a ru
=080 \\ $a 004.438 $2 4
=084 \\ $a 32.973 $2 rubbks
=084 \\ $a З973.2-018.19Java,0 $2 rubbk
=100 1\ $a Эккель, Брюс
=245 00 $a Философия Java : $b 16+ $c Брюс Эккель ; [перевел с английского Е. Матвеев]
=250 \\ $a 4-е полное изд.
=260 \\ $a Санкт-Петербург [и др.] $b Питер $c 2022 $e Чехов, Московская область
=300 \\ $a 1165 с. $b ил. $c 24 см
=336 \\ $a Текст (визуальный)
=337 \\ $a непосредственный
=490 0\ $a Классика computer science
=504 \\ $a Библиогр.: с. 1160-1165
=520 \\ $a Впервые читатель может познакомиться с полной версией этого классического труда, который ранее на русском языке печатался в сокращении. Книга, выдержавшая в оригинале не одно переиздание, за глубокое и поистине философское изложение тонкостей языка Java считается одним из лучших пособий для программистов. Чтобы по-настоящему понять язык Java, необходимо рассматривать его не просто как набор неких команд и операторов, а понять его "философию", подход к решению задач, в сравнении с таковыми в других языках программирования. На этих страницах автор рассказывает об основных проблемах написания кода: в чем их природа и какой подход использует Java в их разрешении. Поэтому обсуждаемые в каждой главе черты языка неразрывно связаны с тем, как они используются для решения определенных задач
=534 \\ $p Пер.: $a Eckel, Bruce $t Thinking in Java $z 978-0131872486
=650 \7 $a Объектно-ориентированное программирование $2 RuMoRKP
=650 \7 $a Программирования языки объектно-ориентированные $2 RuMoRKP
=650 \7 $a Техника. Технические науки -- Энергетика. Радиоэлектроника -- Вычислительная техника -- Вычислительные машины электронные цифровые -- Языки программирования -- Java $2 rubbk
=700 1\ $a Матвеев, Е. В. $e пер.
=852 \\ $a РГБ $b FB $j 2 22-17/205 $x 90
=852 \\ $a РГБ $b ORF $x 82
metadata comments
Фактическая дата выхода в свет - 2018
Библиогр. в конце гл.
Список трудов авт.: с. 1164-1165
Пер.: Eckel, Bruce Thinking in Java 978-0131872486
Библиогр. в конце гл.
Список трудов авт.: с. 1164-1165
Пер.: Eckel, Bruce Thinking in Java 978-0131872486
metadata comments
Russian State Library [rgb] MARC:
=001 009899277
=005 20190228152510.0
=008 190222s2019\\\\ru\\\\\\\\\\\\|||\|\rus|d
=017 \\ $a КН-П-19-011512 $b RuMoRKP
=020 \\ $a 978-5-4461-1107-7
=040 \\ $a RuMoRGB $b rus $e rcr
=041 1\ $a rus $h eng
=044 \\ $a ru
=084 \\ $a З973.2-018.19Java,0 $2 rubbk
=100 1\ $a Эккель, Брюс
=245 00 $a Философия Java $h [Текст] : $b [16+] $c Брюс Эккель : [перевел с английского Е. Матвеев]
=250 \\ $a 4-е полное изд.
=260 \\ $a Москва [и др.] $b Питер $c 2019
=300 \\ $a 1165 с. $b ил., табл. $c 24 см
=336 \\ $a текст (text) $b txt $2 rdacontent
=337 \\ $a неопосредованный (unmediated) $b n $2 rdamedia
=338 \\ $a том (volume) $b nc $2 rdacarrier
=490 0\ $a Классика computer science
=500 \\ $a Фактическая дата выхода в свет - 2018
=504 \\ $a Библиогр. в конце гл.
=504 \\ $a Список трудов авт.: с. 1164-1165
=534 \\ $p Пер.: $a Eckel, Bruce $t Thinking in Java $z 978-0131872486
=650 \7 $a Вычислительная техника -- Вычислительные машины электронные цифровые -- Программирование -- Языки программирования -- Java $2 rubbk
=653 \\ $a JAVA, язык программирования
=852 \\ $a РГБ $b FB $j 2 19-13/17 $x 90
=852 7\ $a РГБ $b CZ2 $h З973.2-018/Э38 $x 82
=001 009899277
=005 20190228152510.0
=008 190222s2019\\\\ru\\\\\\\\\\\\|||\|\rus|d
=017 \\ $a КН-П-19-011512 $b RuMoRKP
=020 \\ $a 978-5-4461-1107-7
=040 \\ $a RuMoRGB $b rus $e rcr
=041 1\ $a rus $h eng
=044 \\ $a ru
=084 \\ $a З973.2-018.19Java,0 $2 rubbk
=100 1\ $a Эккель, Брюс
=245 00 $a Философия Java $h [Текст] : $b [16+] $c Брюс Эккель : [перевел с английского Е. Матвеев]
=250 \\ $a 4-е полное изд.
=260 \\ $a Москва [и др.] $b Питер $c 2019
=300 \\ $a 1165 с. $b ил., табл. $c 24 см
=336 \\ $a текст (text) $b txt $2 rdacontent
=337 \\ $a неопосредованный (unmediated) $b n $2 rdamedia
=338 \\ $a том (volume) $b nc $2 rdacarrier
=490 0\ $a Классика computer science
=500 \\ $a Фактическая дата выхода в свет - 2018
=504 \\ $a Библиогр. в конце гл.
=504 \\ $a Список трудов авт.: с. 1164-1165
=534 \\ $p Пер.: $a Eckel, Bruce $t Thinking in Java $z 978-0131872486
=650 \7 $a Вычислительная техника -- Вычислительные машины электронные цифровые -- Программирование -- Языки программирования -- Java $2 rubbk
=653 \\ $a JAVA, язык программирования
=852 \\ $a РГБ $b FB $j 2 19-13/17 $x 90
=852 7\ $a РГБ $b CZ2 $h З973.2-018/Э38 $x 82
metadata comments
Фактическая дата выхода в свет - 2019
Пер.: Eckel, Bruce Thinking in Java 978-0131872486
Пер.: Eckel, Bruce Thinking in Java 978-0131872486
metadata comments
Russian State Library [rgb] MARC:
=001 010221968
=005 20200826103412.0
=008 200114s2020\\\\ru\||||\\\\\\|0||\|\rus|d
=017 \\ $a КН-П-20-045378 $b RuMoRKP
=017 \\ $a КН-П-19-104357 $b RuMoRKP
=020 \\ $a 978-5-4461-1107-7
=040 \\ $a RuMoRGB $b rus $e rcr
=041 1\ $a rus $h eng
=084 \\ $a З973.2-018.19Java,0 $2 rubbk
=100 1\ $a Эккель, Брюс
=245 00 $a Философия Java : $b 16+ $c Брюс Эккель : [перевел с английского Е. Матвеев]
=250 \\ $a 4-е полное изд.
=260 \\ $a Москва [и др.] $b Питер $c 2020
=300 \\ $a 1165 с. $b табл. $c 24 см
=336 \\ $a Текст (визуальный)
=337 \\ $a непосредственный
=490 0\ $a Классика computer science
=500 \\ $a Фактическая дата выхода в свет - 2019
=534 \\ $p Пер.: $a Eckel, Bruce $t Thinking in Java $z 978-0131872486
=650 \7 $a Техника. Технические науки -- Энергетика. Радиоэлектроника -- Вычислительная техника -- Вычислительные машины электронные цифровые -- Языки программирования -- Java $2 rubbk
=852 \\ $a РГБ $b FB $j 2 19-81/132 $x 90
=852 7\ $a РГБ $b CZ2 $h З973.2-018/Э38 $x 82
=852 \\ $a РГБ $b FB $j 2 20-37/209 $x 90
=852 \\ $a РГБ $b ORF $x 82
=852 \\ $a РГБ $b ORF $x 82
=852 \\ $a РГБ $b ORF $x 82
=001 010221968
=005 20200826103412.0
=008 200114s2020\\\\ru\||||\\\\\\|0||\|\rus|d
=017 \\ $a КН-П-20-045378 $b RuMoRKP
=017 \\ $a КН-П-19-104357 $b RuMoRKP
=020 \\ $a 978-5-4461-1107-7
=040 \\ $a RuMoRGB $b rus $e rcr
=041 1\ $a rus $h eng
=084 \\ $a З973.2-018.19Java,0 $2 rubbk
=100 1\ $a Эккель, Брюс
=245 00 $a Философия Java : $b 16+ $c Брюс Эккель : [перевел с английского Е. Матвеев]
=250 \\ $a 4-е полное изд.
=260 \\ $a Москва [и др.] $b Питер $c 2020
=300 \\ $a 1165 с. $b табл. $c 24 см
=336 \\ $a Текст (визуальный)
=337 \\ $a непосредственный
=490 0\ $a Классика computer science
=500 \\ $a Фактическая дата выхода в свет - 2019
=534 \\ $p Пер.: $a Eckel, Bruce $t Thinking in Java $z 978-0131872486
=650 \7 $a Техника. Технические науки -- Энергетика. Радиоэлектроника -- Вычислительная техника -- Вычислительные машины электронные цифровые -- Языки программирования -- Java $2 rubbk
=852 \\ $a РГБ $b FB $j 2 19-81/132 $x 90
=852 7\ $a РГБ $b CZ2 $h З973.2-018/Э38 $x 82
=852 \\ $a РГБ $b FB $j 2 20-37/209 $x 90
=852 \\ $a РГБ $b ORF $x 82
=852 \\ $a РГБ $b ORF $x 82
=852 \\ $a РГБ $b ORF $x 82
Alternative description
Thinking in Java......Page 1
Overview......Page 13
What’s Inside......Page 14
Preface......Page 23
The 4th edition......Page 24
Acknowledgements......Page 26
Prerequisites......Page 31
Goals......Page 32
JDK HTML documentation......Page 33
Source code......Page 34
Errors......Page 36
The progress of abstraction......Page 37
An object has an interface......Page 39
An object provides services......Page 40
The hidden implementation......Page 41
Reusing the implementation......Page 42
Inheritance......Page 43
Interchangeable objects with polymorphism......Page 47
Containers......Page 50
Object creation & lifetime......Page 52
Exception handling: dealing with errors......Page 53
Concurrent programming......Page 54
Java and the Internet......Page 55
Summary......Page 60
You manipulate objects with references......Page 63
You must create all the objects......Page 64
You never need to destroy an object......Page 67
Creating new data types: class......Page 68
Methods, arguments, and return values......Page 70
Building a Java program......Page 72
Your first Java program......Page 74
Comments and embedded documentation......Page 77
Exercises......Page 82
Simpler print statements......Page 85
if-else......Page 115
Precedence......Page 86
Assignment......Page 87
Mathematical operators......Page 89
Auto increment and decrement......Page 91
Relational operators......Page 92
Logical operators......Page 93
Literals......Page 95
Bitwise operators......Page 97
Shift operators......Page 98
Ternary if-else operator......Page 101
String operator + and +=......Page 102
Casting operators......Page 103
Java has no “sizeof”......Page 105
A compendium of operators......Page 106
Summary......Page 113
Iteration......Page 116
Foreach syntax......Page 119
break and continue......Page 121
The infamous “goto”......Page 123
switch......Page 126
Summary......Page 128
Guaranteed initialization with the constructor......Page 129
Method overloading......Page 131
Default constructors......Page 136
The this keyword......Page 138
Cleanup: finalization and garbage collection......Page 141
Member initialization......Page 147
Constructor initialization......Page 149
Array initialization......Page 155
Enumerated types......Page 163
Summary......Page 165
Access Control......Page 167
package: the library unit......Page 168
Java access specifiers......Page 175
Interface and implementation......Page 180
Class access......Page 181
Summary......Page 184
Composition syntax......Page 187
Inheritance syntax......Page 190
Delegation......Page 193
Combining composition and inheritance......Page 195
Choosing composition vs. inheritance......Page 200
protected......Page 202
Upcasting......Page 203
The final keyword......Page 204
Initialization and class loading......Page 211
Summary......Page 213
Upcasting revisited......Page 215
The twist......Page 218
Constructors and polymorphism......Page 226
Covariant return types......Page 233
Designing with inheritance......Page 234
Summary......Page 239
Abstract classes and methods......Page 241
Interfaces......Page 244
Complete decoupling......Page 247
“Multiple inheritance” in Java......Page 252
Extending an interface with inheritance......Page 253
Adapting to an interface......Page 256
Fields in interfaces......Page 257
Nesting interfaces......Page 259
Interfaces and factories......Page 261
Summary......Page 263
Creating inner classes......Page 265
The link to the outer class......Page 266
Using .this and .new......Page 268
Inner classes and upcasting......Page 269
Inner classes in methods and scopes......Page 271
Anonymous inner classes......Page 273
Nested classes......Page 278
Why inner classes?......Page 281
Can inner classes be overridden?......Page 291
Local inner classes......Page 293
Inner-class identifiers......Page 294
Summary......Page 295
Holding Your Objects......Page 297
Generics and type-safe containers......Page 298
Basic concepts......Page 300
Adding groups of elements......Page 301
Printing containers......Page 303
List......Page 305
Iterator......Page 308
LinkedList......Page 311
Stack......Page 313
Set......Page 314
Map......Page 317
Queue......Page 320
Collection vs. Iterator......Page 323
Foreach and iterators......Page 326
Summary......Page 330
Concepts......Page 335
Basic exceptions......Page 336
Catching an exception......Page 337
Creating your own exceptions......Page 339
The exception specification......Page 344
Catching any exception......Page 345
Standard Java exceptions......Page 352
Performing cleanup with finally......Page 354
Exception restrictions......Page 360
Constructors......Page 362
Exception matching......Page 366
Alternative approaches......Page 367
Summary......Page 374
Immutable Strings......Page 377
Overloading ‘+’ vs. StringBuilder......Page 378
Unintended recursion......Page 381
Operations on Strings......Page 383
Formatting output......Page 384
Regular expressions......Page 392
Scanning input......Page 408
StringTokenizer......Page 411
Summary......Page 413
The need for RTTI......Page 415
The Class object......Page 417
Checking before a cast......Page 426
Registered factories......Page 435
instanceof vs. Class equivalence......Page 438
Reflection: runtime class information......Page 439
Dynamic proxies......Page 442
Null Objects......Page 446
Interfaces and type information......Page 452
Summary......Page 458
Generics......Page 461
Simple generics......Page 462
Generic interfaces......Page 468
Generic methods......Page 471
Anonymous inner classes......Page 481
Building complex models......Page 482
The mystery of erasure......Page 484
The C++ approach......Page 486
Compensating for erasure......Page 493
Bounds......Page 501
Wildcards......Page 504
Issues......Page 515
Self-bounded types......Page 522
Dynamic type safety......Page 528
Exceptions......Page 529
Mixins......Page 531
Latent typing......Page 536
Compensating for the lack of latent typing......Page 540
Using function objects as strategies......Page 548
Summary: Is casting really so bad?......Page 553
Why arrays are special......Page 557
Arrays are first-class objects......Page 558
Returning an array......Page 561
Multidimensional arrays......Page 562
Arrays and generics......Page 565
Creating test data......Page 568
Arrays utilities......Page 577
Summary......Page 586
Full container taxonomy......Page 589
Filling containers......Page 590
Collection functionality......Page 602
Optional operations......Page 604
List functionality......Page 608
Sets and storage order......Page 611
Queues......Page 616
Understanding Maps......Page 620
Hashing and hash codes......Page 627
Choosing an implementation......Page 639
Utilities......Page 654
Holding references......Page 661
Java 1.0/1.1 containers......Page 664
Summary......Page 668
The File class......Page 669
Input and output......Page 678
Adding attributes and useful interfaces......Page 681
Readers & Writers......Page 684
Typical uses of I/O streams......Page 687
File reading & writing utilities......Page 694
Standard I/O......Page 697
Process control......Page 699
New I/O......Page 701
Compression......Page 720
Object serialization......Page 725
XML......Page 740
Preferences......Page 743
Summary......Page 744
Basic enum features......Page 747
Adding methods to an enum......Page 749
enums in switch statements......Page 750
The mystery of values()......Page 751
Random selection......Page 754
Using interfaces for organization......Page 756
Using EnumSet instead of flags......Page 759
Using EnumMap......Page 761
Constant-specific methods......Page 762
Multiple dispatching......Page 773
Summary......Page 781
Annotations......Page 783
Basic syntax......Page 784
Writing annotation processors......Page 787
Using apt to process annotations......Page 794
Using the Visitor pattern with apt......Page 797
Annotation-based unit testing......Page 800
Summary......Page 817
Concurrency......Page 819
The many faces of concurrency......Page 820
Basic threading......Page 823
Sharing resources......Page 846
Terminating tasks......Page 866
Cooperation between tasks......Page 878
Deadlock......Page 896
New library components......Page 901
Simulation......Page 918
Performance tuning......Page 931
Active objects......Page 947
Summary......Page 951
Graphical User Interfaces......Page 955
Swing basics......Page 957
Making a button......Page 960
Capturing an event......Page 961
Text areas......Page 963
Controlling layout......Page 964
The Swing event model......Page 967
A selection of Swing components......Page 975
JNLP and Java Web Start......Page 1005
Concurrency & Swing......Page 1010
Visual programming and JavaBeans......Page 1018
Alternatives to Swing......Page 1032
Building Flash Web clients with Flex......Page 1033
Creating SWT applications......Page 1042
Summary......Page 1055
Thinking in Java seminar......Page 1057
Thinking in Enterprise Java......Page 1058
Thinking in Patterns seminar......Page 1059
Design consulting and reviews......Page 1060
Books......Page 1061
Index......Page 1067
Overview......Page 13
What’s Inside......Page 14
Preface......Page 23
The 4th edition......Page 24
Acknowledgements......Page 26
Prerequisites......Page 31
Goals......Page 32
JDK HTML documentation......Page 33
Source code......Page 34
Errors......Page 36
The progress of abstraction......Page 37
An object has an interface......Page 39
An object provides services......Page 40
The hidden implementation......Page 41
Reusing the implementation......Page 42
Inheritance......Page 43
Interchangeable objects with polymorphism......Page 47
Containers......Page 50
Object creation & lifetime......Page 52
Exception handling: dealing with errors......Page 53
Concurrent programming......Page 54
Java and the Internet......Page 55
Summary......Page 60
You manipulate objects with references......Page 63
You must create all the objects......Page 64
You never need to destroy an object......Page 67
Creating new data types: class......Page 68
Methods, arguments, and return values......Page 70
Building a Java program......Page 72
Your first Java program......Page 74
Comments and embedded documentation......Page 77
Exercises......Page 82
Simpler print statements......Page 85
if-else......Page 115
Precedence......Page 86
Assignment......Page 87
Mathematical operators......Page 89
Auto increment and decrement......Page 91
Relational operators......Page 92
Logical operators......Page 93
Literals......Page 95
Bitwise operators......Page 97
Shift operators......Page 98
Ternary if-else operator......Page 101
String operator + and +=......Page 102
Casting operators......Page 103
Java has no “sizeof”......Page 105
A compendium of operators......Page 106
Summary......Page 113
Iteration......Page 116
Foreach syntax......Page 119
break and continue......Page 121
The infamous “goto”......Page 123
switch......Page 126
Summary......Page 128
Guaranteed initialization with the constructor......Page 129
Method overloading......Page 131
Default constructors......Page 136
The this keyword......Page 138
Cleanup: finalization and garbage collection......Page 141
Member initialization......Page 147
Constructor initialization......Page 149
Array initialization......Page 155
Enumerated types......Page 163
Summary......Page 165
Access Control......Page 167
package: the library unit......Page 168
Java access specifiers......Page 175
Interface and implementation......Page 180
Class access......Page 181
Summary......Page 184
Composition syntax......Page 187
Inheritance syntax......Page 190
Delegation......Page 193
Combining composition and inheritance......Page 195
Choosing composition vs. inheritance......Page 200
protected......Page 202
Upcasting......Page 203
The final keyword......Page 204
Initialization and class loading......Page 211
Summary......Page 213
Upcasting revisited......Page 215
The twist......Page 218
Constructors and polymorphism......Page 226
Covariant return types......Page 233
Designing with inheritance......Page 234
Summary......Page 239
Abstract classes and methods......Page 241
Interfaces......Page 244
Complete decoupling......Page 247
“Multiple inheritance” in Java......Page 252
Extending an interface with inheritance......Page 253
Adapting to an interface......Page 256
Fields in interfaces......Page 257
Nesting interfaces......Page 259
Interfaces and factories......Page 261
Summary......Page 263
Creating inner classes......Page 265
The link to the outer class......Page 266
Using .this and .new......Page 268
Inner classes and upcasting......Page 269
Inner classes in methods and scopes......Page 271
Anonymous inner classes......Page 273
Nested classes......Page 278
Why inner classes?......Page 281
Can inner classes be overridden?......Page 291
Local inner classes......Page 293
Inner-class identifiers......Page 294
Summary......Page 295
Holding Your Objects......Page 297
Generics and type-safe containers......Page 298
Basic concepts......Page 300
Adding groups of elements......Page 301
Printing containers......Page 303
List......Page 305
Iterator......Page 308
LinkedList......Page 311
Stack......Page 313
Set......Page 314
Map......Page 317
Queue......Page 320
Collection vs. Iterator......Page 323
Foreach and iterators......Page 326
Summary......Page 330
Concepts......Page 335
Basic exceptions......Page 336
Catching an exception......Page 337
Creating your own exceptions......Page 339
The exception specification......Page 344
Catching any exception......Page 345
Standard Java exceptions......Page 352
Performing cleanup with finally......Page 354
Exception restrictions......Page 360
Constructors......Page 362
Exception matching......Page 366
Alternative approaches......Page 367
Summary......Page 374
Immutable Strings......Page 377
Overloading ‘+’ vs. StringBuilder......Page 378
Unintended recursion......Page 381
Operations on Strings......Page 383
Formatting output......Page 384
Regular expressions......Page 392
Scanning input......Page 408
StringTokenizer......Page 411
Summary......Page 413
The need for RTTI......Page 415
The Class object......Page 417
Checking before a cast......Page 426
Registered factories......Page 435
instanceof vs. Class equivalence......Page 438
Reflection: runtime class information......Page 439
Dynamic proxies......Page 442
Null Objects......Page 446
Interfaces and type information......Page 452
Summary......Page 458
Generics......Page 461
Simple generics......Page 462
Generic interfaces......Page 468
Generic methods......Page 471
Anonymous inner classes......Page 481
Building complex models......Page 482
The mystery of erasure......Page 484
The C++ approach......Page 486
Compensating for erasure......Page 493
Bounds......Page 501
Wildcards......Page 504
Issues......Page 515
Self-bounded types......Page 522
Dynamic type safety......Page 528
Exceptions......Page 529
Mixins......Page 531
Latent typing......Page 536
Compensating for the lack of latent typing......Page 540
Using function objects as strategies......Page 548
Summary: Is casting really so bad?......Page 553
Why arrays are special......Page 557
Arrays are first-class objects......Page 558
Returning an array......Page 561
Multidimensional arrays......Page 562
Arrays and generics......Page 565
Creating test data......Page 568
Arrays utilities......Page 577
Summary......Page 586
Full container taxonomy......Page 589
Filling containers......Page 590
Collection functionality......Page 602
Optional operations......Page 604
List functionality......Page 608
Sets and storage order......Page 611
Queues......Page 616
Understanding Maps......Page 620
Hashing and hash codes......Page 627
Choosing an implementation......Page 639
Utilities......Page 654
Holding references......Page 661
Java 1.0/1.1 containers......Page 664
Summary......Page 668
The File class......Page 669
Input and output......Page 678
Adding attributes and useful interfaces......Page 681
Readers & Writers......Page 684
Typical uses of I/O streams......Page 687
File reading & writing utilities......Page 694
Standard I/O......Page 697
Process control......Page 699
New I/O......Page 701
Compression......Page 720
Object serialization......Page 725
XML......Page 740
Preferences......Page 743
Summary......Page 744
Basic enum features......Page 747
Adding methods to an enum......Page 749
enums in switch statements......Page 750
The mystery of values()......Page 751
Random selection......Page 754
Using interfaces for organization......Page 756
Using EnumSet instead of flags......Page 759
Using EnumMap......Page 761
Constant-specific methods......Page 762
Multiple dispatching......Page 773
Summary......Page 781
Annotations......Page 783
Basic syntax......Page 784
Writing annotation processors......Page 787
Using apt to process annotations......Page 794
Using the Visitor pattern with apt......Page 797
Annotation-based unit testing......Page 800
Summary......Page 817
Concurrency......Page 819
The many faces of concurrency......Page 820
Basic threading......Page 823
Sharing resources......Page 846
Terminating tasks......Page 866
Cooperation between tasks......Page 878
Deadlock......Page 896
New library components......Page 901
Simulation......Page 918
Performance tuning......Page 931
Active objects......Page 947
Summary......Page 951
Graphical User Interfaces......Page 955
Swing basics......Page 957
Making a button......Page 960
Capturing an event......Page 961
Text areas......Page 963
Controlling layout......Page 964
The Swing event model......Page 967
A selection of Swing components......Page 975
JNLP and Java Web Start......Page 1005
Concurrency & Swing......Page 1010
Visual programming and JavaBeans......Page 1018
Alternatives to Swing......Page 1032
Building Flash Web clients with Flex......Page 1033
Creating SWT applications......Page 1042
Summary......Page 1055
Thinking in Java seminar......Page 1057
Thinking in Enterprise Java......Page 1058
Thinking in Patterns seminar......Page 1059
Design consulting and reviews......Page 1060
Books......Page 1061
Index......Page 1067
Alternative description
<p>“Thinking in Java should be read cover to cover by every Java programmer, then kept close at hand for frequent reference. The exercises are challenging, and the chapter on Collections is superb! Not only did this book help me to pass the Sun Certified Java Programmer exam; it’s also the first book I turn to whenever I have a Java question.”<br>
—Jim Pleger, Loudoun County (Virginia) Government“Much better than any other Java book I’ve seen. Make that ‘by an order of magnitude’.... Very complete, with excellent right-to-the-point examples and intelligent, not dumbed-down, explanations.... In contrast to many other Java books I found it to be unusually mature, consistent, intellectually honest, well-written, and precise. IMHO, an ideal book for studying Java.”<br>
—Anatoly Vorobey, Technion University, Haifa, Israel“Absolutely one of the best programming tutorials I’ve seen for any language.”<br>
—Joakim Ziegler, FIX sysop“Thank you again for your awesome book. I was really floundering (being a non-C programmer), but your book has brought me up to speed as fast as I could read it. It’s really cool to be able to understand the underlying principles and concepts from the start, rather than having to try to build that conceptual model through trial and error. Hopefully I will be able to attend your seminar in the not-too-distant future.”<br>
—Randall R. Hawley, automation technician, Eli Lilly & Co.“This is one of the best books I’ve read about a programming language.... The best book ever written on Java.”<br>
—Ravindra Pai, Oracle Corporation, SUNOS product line“Bruce, your book is wonderful! Your explanations are clear and direct. Through your fantastic book I have gained a tremendous amount of Java knowledge. The exercises are also fantastic and do an excellent job reinforcing the ideas explained throughout the chapters. I look forward to reading more books written by you. Thank you for the tremendous service that you are providing by writing such great books. My code will be much better after reading Thinking in Java. I thank you and I’m sure any programmers who will have to maintain my code are also grateful to you.”<br>
—Yvonne Watkins, Java artisan, Discover Technologies, Inc.“Other books cover the what of Java (describing the syntax and the libraries) or the how of Java (practical programming examples). Thinking in Java is the only book I know that explains the why of Java: Why it was designed the way it was, why it works the way it does, why it sometimes doesn’t work, why it’s better than C++, why it’s not. Although it also does a good job of teaching the what and how of the language, Thinking in Java is definitely the thinking person’s choice in a Java book.”<br>
—Robert S. StephensonAwards for Thinking in Java2003 Software Development Magazine Jolt Award for Best Book<br>
2003 Java Developer’s Journal Reader’s Choice Award for Best Book<br>
2001 JavaWorld Editor’s Choice Award for Best Book<br>
2000 JavaWorld Reader’s Choice Award for Best Book<br>
1999 Software Development Magazine Productivity Award<br>
1998 Java Developer’s Journal Editor’s Choice Award for Best Book</p>
<p>Thinking in Java has earned raves from programmers worldwide for its extraordinary clarity, careful organization, and small, direct programming examples. From the fundamentals of Java syntax to its most advanced features, Thinking in Java is designed to teach, one simple step at a time.</p>
<ul>
<li>The classic object-oriented introduction for beginners and experts alike, fully updated for Java SE5/6 with many new examples and chapters!</li>
<li>Test framework shows program output.</li>
<li>Design patterns are shown with multiple examples throughout: Adapter, Bridge, Chain of Responsibility, Command, Decorator, Facade, Factory Method, Flyweight, Iterator, Data Transfer Object, Null Object, Proxy, Singleton, State, Strategy, Template Method, and Visitor.</li>
<li>Introduction to</li>
<li>Completely rewritten concurrency chapter gives you a solid grasp of threading fundamentals.</li>
<li>500+ working Java programs in 700+ compiling files, rewritten for this edition and Java SE5/6.</li>
<li>Companion web site includes all source code, annotated solution guide, weblog, and multimedia seminars.</li>
<li>Thorough coverage of fundamentals; demonstrates advanced topics.</li>
<li>Explains sound object-oriented principles.</li>
<li>Hands-On Java Seminar CD available online, with full multimedia seminar by Bruce Eckel.</li>
<li>Live seminars, consulting, and reviews available. See www.MindView.net</li>
</ul>
<p>Download seven free sample chapters from Thinking in Java, Fourth Edition. Visit http://mindview.net/Books/TIJ4.</p>
<p><br>
Destined to become a classic, this tutorial guides you through the fundamentals and the advanced aspects of Java. Author Bruce Eckel uses the same style, format, incisive prose and clear examples as he did in <i>Thinking in C++</i>. He doesn't just teach how to write code, he teaches how to think and program in Java. This highly recommended text is designed for those familiar with programming concepts and object-orientation. Eckel covers objects, program flow, error handling, network programming and design patterns. He includes details on the cornerstones of Java and OOP, with polymorphism, implementation hiding, class differentiation and reuse. He also covers passing/returning objects and running multiple concurrent subtasks.
</p>
—Jim Pleger, Loudoun County (Virginia) Government“Much better than any other Java book I’ve seen. Make that ‘by an order of magnitude’.... Very complete, with excellent right-to-the-point examples and intelligent, not dumbed-down, explanations.... In contrast to many other Java books I found it to be unusually mature, consistent, intellectually honest, well-written, and precise. IMHO, an ideal book for studying Java.”<br>
—Anatoly Vorobey, Technion University, Haifa, Israel“Absolutely one of the best programming tutorials I’ve seen for any language.”<br>
—Joakim Ziegler, FIX sysop“Thank you again for your awesome book. I was really floundering (being a non-C programmer), but your book has brought me up to speed as fast as I could read it. It’s really cool to be able to understand the underlying principles and concepts from the start, rather than having to try to build that conceptual model through trial and error. Hopefully I will be able to attend your seminar in the not-too-distant future.”<br>
—Randall R. Hawley, automation technician, Eli Lilly & Co.“This is one of the best books I’ve read about a programming language.... The best book ever written on Java.”<br>
—Ravindra Pai, Oracle Corporation, SUNOS product line“Bruce, your book is wonderful! Your explanations are clear and direct. Through your fantastic book I have gained a tremendous amount of Java knowledge. The exercises are also fantastic and do an excellent job reinforcing the ideas explained throughout the chapters. I look forward to reading more books written by you. Thank you for the tremendous service that you are providing by writing such great books. My code will be much better after reading Thinking in Java. I thank you and I’m sure any programmers who will have to maintain my code are also grateful to you.”<br>
—Yvonne Watkins, Java artisan, Discover Technologies, Inc.“Other books cover the what of Java (describing the syntax and the libraries) or the how of Java (practical programming examples). Thinking in Java is the only book I know that explains the why of Java: Why it was designed the way it was, why it works the way it does, why it sometimes doesn’t work, why it’s better than C++, why it’s not. Although it also does a good job of teaching the what and how of the language, Thinking in Java is definitely the thinking person’s choice in a Java book.”<br>
—Robert S. StephensonAwards for Thinking in Java2003 Software Development Magazine Jolt Award for Best Book<br>
2003 Java Developer’s Journal Reader’s Choice Award for Best Book<br>
2001 JavaWorld Editor’s Choice Award for Best Book<br>
2000 JavaWorld Reader’s Choice Award for Best Book<br>
1999 Software Development Magazine Productivity Award<br>
1998 Java Developer’s Journal Editor’s Choice Award for Best Book</p>
<p>Thinking in Java has earned raves from programmers worldwide for its extraordinary clarity, careful organization, and small, direct programming examples. From the fundamentals of Java syntax to its most advanced features, Thinking in Java is designed to teach, one simple step at a time.</p>
<ul>
<li>The classic object-oriented introduction for beginners and experts alike, fully updated for Java SE5/6 with many new examples and chapters!</li>
<li>Test framework shows program output.</li>
<li>Design patterns are shown with multiple examples throughout: Adapter, Bridge, Chain of Responsibility, Command, Decorator, Facade, Factory Method, Flyweight, Iterator, Data Transfer Object, Null Object, Proxy, Singleton, State, Strategy, Template Method, and Visitor.</li>
<li>Introduction to</li>
<li>Completely rewritten concurrency chapter gives you a solid grasp of threading fundamentals.</li>
<li>500+ working Java programs in 700+ compiling files, rewritten for this edition and Java SE5/6.</li>
<li>Companion web site includes all source code, annotated solution guide, weblog, and multimedia seminars.</li>
<li>Thorough coverage of fundamentals; demonstrates advanced topics.</li>
<li>Explains sound object-oriented principles.</li>
<li>Hands-On Java Seminar CD available online, with full multimedia seminar by Bruce Eckel.</li>
<li>Live seminars, consulting, and reviews available. See www.MindView.net</li>
</ul>
<p>Download seven free sample chapters from Thinking in Java, Fourth Edition. Visit http://mindview.net/Books/TIJ4.</p>
<p><br>
Destined to become a classic, this tutorial guides you through the fundamentals and the advanced aspects of Java. Author Bruce Eckel uses the same style, format, incisive prose and clear examples as he did in <i>Thinking in C++</i>. He doesn't just teach how to write code, he teaches how to think and program in Java. This highly recommended text is designed for those familiar with programming concepts and object-orientation. Eckel covers objects, program flow, error handling, network programming and design patterns. He includes details on the cornerstones of Java and OOP, with polymorphism, implementation hiding, class differentiation and reuse. He also covers passing/returning objects and running multiple concurrent subtasks.
</p>
Alternative description
“Thinking in Java should be read cover to cover by every Java programmer, then kept close at hand for frequent reference. The exercises are challenging, and the chapter on Collections is superb! Not only did this book help me to pass the Sun Certified Java Programmer exam; it’s also the first book I turn to whenever I have a Java question.”
—Jim Pleger, Loudoun County (Virginia) Government
“Much better than any other Java book I’ve seen. Make that ‘by an order of magnitude’.... Very complete, with excellent right-to-the-point examples and intelligent, not dumbed-down, explanations.... In contrast to many other Java books I found it to be unusually mature, consistent, intellectually honest, well-written, and precise. IMHO, an ideal book for studying Java.”
—Anatoly Vorobey, Technion University, Haifa, Israel
“Absolutely one of the best programming tutorials I’ve seen for any language.”
—Joakim Ziegler, FIX sysop
“Thank you again for your awesome book. I was really floundering (being a non-C programmer), but your book has brought me up to speed as fast as I could read it. It’s really cool to be able to understand the underlying principles and concepts from the start, rather than having to try to build that conceptual model through trial and error. Hopefully I will be able to attend your seminar in the not-too-distant future.”
—Randall R. Hawley, automation technician, Eli Lilly & Co.
“This is one of the best books I’ve read about a programming language.... The best book ever written on Java.”
—Ravindra Pai, Oracle Corporation, SUNOS product line
“Bruce, your book is wonderful! Your explanations are clear and direct. Through your fantastic book I have gained a tremendous amount of Java knowledge. The exercises are also fantastic and do an excellent job reinforcing the ideas explained throughout the chapters. I look forward to reading more books written by you. Thank you for the tremendous service that you are providing by writing such great books. My code will be much better after reading Thinking in Java. I thank you and I’m sure any programmers who will have to maintain my code are also grateful to you.”
- Yvonne Watkins, Java artisan, Discover Technologies, Inc.
“Other books cover the what of Java (describing the syntax and the libraries) or the how of Java (practical programming examples). Thinking in Java is the only book I know that explains the why of Java: Why it was designed the way it was, why it works the way it does, why it sometimes doesn’t work, why it’s better than C++, why it’s not. Although it also does a good job of teaching the what and how of the language, Thinking in Java is definitely the thinking person’s choice in a Java book.”
—Robert S. Stephenson
Awards for Thinking in Java
- 2003 Software Development Magazine Jolt Award for Best Book
- 2003 Java Developer’s Journal Reader’s Choice Award for Best Book
2001 JavaWorld Editor’s Choice Award for Best Book
2000 JavaWorld Reader’s Choice Award for Best Book
1999 Software Development Magazine Productivity Award
1998 Java Developer’s Journal Editor’s Choice Award for Best Book
Download seven free sample chapters from Thinking in Java, Fourth Edition. Visit http://mindview.net/Books/TIJ4.
—Jim Pleger, Loudoun County (Virginia) Government
“Much better than any other Java book I’ve seen. Make that ‘by an order of magnitude’.... Very complete, with excellent right-to-the-point examples and intelligent, not dumbed-down, explanations.... In contrast to many other Java books I found it to be unusually mature, consistent, intellectually honest, well-written, and precise. IMHO, an ideal book for studying Java.”
—Anatoly Vorobey, Technion University, Haifa, Israel
“Absolutely one of the best programming tutorials I’ve seen for any language.”
—Joakim Ziegler, FIX sysop
“Thank you again for your awesome book. I was really floundering (being a non-C programmer), but your book has brought me up to speed as fast as I could read it. It’s really cool to be able to understand the underlying principles and concepts from the start, rather than having to try to build that conceptual model through trial and error. Hopefully I will be able to attend your seminar in the not-too-distant future.”
—Randall R. Hawley, automation technician, Eli Lilly & Co.
“This is one of the best books I’ve read about a programming language.... The best book ever written on Java.”
—Ravindra Pai, Oracle Corporation, SUNOS product line
“Bruce, your book is wonderful! Your explanations are clear and direct. Through your fantastic book I have gained a tremendous amount of Java knowledge. The exercises are also fantastic and do an excellent job reinforcing the ideas explained throughout the chapters. I look forward to reading more books written by you. Thank you for the tremendous service that you are providing by writing such great books. My code will be much better after reading Thinking in Java. I thank you and I’m sure any programmers who will have to maintain my code are also grateful to you.”
- Yvonne Watkins, Java artisan, Discover Technologies, Inc.
“Other books cover the what of Java (describing the syntax and the libraries) or the how of Java (practical programming examples). Thinking in Java is the only book I know that explains the why of Java: Why it was designed the way it was, why it works the way it does, why it sometimes doesn’t work, why it’s better than C++, why it’s not. Although it also does a good job of teaching the what and how of the language, Thinking in Java is definitely the thinking person’s choice in a Java book.”
—Robert S. Stephenson
Awards for Thinking in Java
- 2003 Software Development Magazine Jolt Award for Best Book
- 2003 Java Developer’s Journal Reader’s Choice Award for Best Book
2001 JavaWorld Editor’s Choice Award for Best Book
2000 JavaWorld Reader’s Choice Award for Best Book
1999 Software Development Magazine Productivity Award
1998 Java Developer’s Journal Editor’s Choice Award for Best Book
Download seven free sample chapters from Thinking in Java, Fourth Edition. Visit http://mindview.net/Books/TIJ4.
Alternative description
Thinking in Java is a printed version of Bruce Eckel's online materials that provides a useful perspective on mastering Java for those with previous programming experience. The author's take on the essence of Java as a new programming language and the thorough introduction to Java's features make this a worthwhile tutorial. Thinking in Java begins a little esoterically, with the author's reflections on why Java is new and better. (This book's choice of font for chapter headings is remarkably hard on the eyes.) The author outlines his thoughts on why Java will make you a better programmer, without all the complexity. The book is better when he presents actual language features. There's a tutorial to basic Java types, keywords, and operators. The guide includes extensive source code that is sometimes daunting (as with the author's sample code for all the Java operators in one listing.) As such, this text will be most useful for the experienced developer.
The text then moves on to class design issues, when to use inheritance and composition, and related topics of information hiding and polymorphism. (The treatment of inner classes and scoping will likely seem a bit overdone for most readers.) The chapter on Java collection classes for both Java Developer's Kit (JDK) 1.1 and the new classes, such as sets, lists, and maps, are much better. There's material in this chapter that you are unlikely to find anywhere else.
Chapters on exception handling and programming with type information are also worthwhile, as are the chapters on the new Swing interface classes and network programming. Although it adopts somewhat of a mixed-bag approach, Thinking in Java contains some excellent material for the object-oriented developer who wants to see what all the fuss is about with Java.
The text then moves on to class design issues, when to use inheritance and composition, and related topics of information hiding and polymorphism. (The treatment of inner classes and scoping will likely seem a bit overdone for most readers.) The chapter on Java collection classes for both Java Developer's Kit (JDK) 1.1 and the new classes, such as sets, lists, and maps, are much better. There's material in this chapter that you are unlikely to find anywhere else.
Chapters on exception handling and programming with type information are also worthwhile, as are the chapters on the new Swing interface classes and network programming. Although it adopts somewhat of a mixed-bag approach, Thinking in Java contains some excellent material for the object-oriented developer who wants to see what all the fuss is about with Java.
Alternative description
Впервые читатель может познакомиться с полной версией этого классического труда, который ранее на русском языке печатался в сокращении. Книга, выдержавшая в оригинале не одно переиздание, за глубокое и поистине философское изложение тонкостей языка Java считается одним из лучших пособий для программистов. Чтобы по-настоящему понять язык Java, необходимо рассматривать его не просто как набор неких команд и операторов, а понять его "философию", подход к решению задач, в сравнении с таковыми в других языках программирования. На этих страницах автор рассказывает об основных проблемах написания кода: в чем их природа и какой подход использует Java в их разрешении. Поэтому обсуждаемые в каждой главе черты языка неразрывно связаны с тем, как они используются для решения определенных задач
Alternative description
Introduction to objects
Everything is an object
Operators
Controlling execution
Initialization & cleanup
Access control
Reusing classes
Polymorphism
Interfaces
Inner classes
Holding your objects
Error handling with exceptions
Strings
Type information
Generics
Arrays
Containers in depth
I/O
Enumerated types
Annotations
Concurrency
Graphical user interfaces.
Everything is an object
Operators
Controlling execution
Initialization & cleanup
Access control
Reusing classes
Polymorphism
Interfaces
Inner classes
Holding your objects
Error handling with exceptions
Strings
Type information
Generics
Arrays
Containers in depth
I/O
Enumerated types
Annotations
Concurrency
Graphical user interfaces.
date open sourced
2012-03-09
🚀 Fast downloads
Become a member to support the long-term preservation of books, papers, and more. To show our gratitude for your support, you get fast downloads. ❤️
- Fast Partner Server #1 (recommended)
- Fast Partner Server #2 (recommended)
- Fast Partner Server #3 (recommended)
- Fast Partner Server #4 (recommended)
- Fast Partner Server #5 (recommended)
- Fast Partner Server #6 (recommended)
- Fast Partner Server #7
- Fast Partner Server #8
- Fast Partner Server #9
- Fast Partner Server #10
- Fast Partner Server #11
🐢 Slow downloads
From trusted partners. More information in the FAQ. (might require browser verification — unlimited downloads!)
- Slow Partner Server #1 (slightly faster but with waitlist)
- Slow Partner Server #2 (slightly faster but with waitlist)
- Slow Partner Server #3 (slightly faster but with waitlist)
- Slow Partner Server #4 (slightly faster but with waitlist)
- Slow Partner Server #5 (no waitlist, but can be very slow)
- Slow Partner Server #6 (no waitlist, but can be very slow)
- Slow Partner Server #7 (no waitlist, but can be very slow)
- Slow Partner Server #8 (no waitlist, but can be very slow)
- After downloading: Open in our viewer
All download options have the same file, and should be safe to use. That said, always be cautious when downloading files from the internet, especially from sites external to Anna’s Archive. For example, be sure to keep your devices updated.
External downloads
-
For large files, we recommend using a download manager to prevent interruptions.
Recommended download managers: Motrix -
You will need an ebook or PDF reader to open the file, depending on the file format.
Recommended ebook readers: Anna’s Archive online viewer, ReadEra, and Calibre -
Use online tools to convert between formats.
Recommended conversion tools: CloudConvert and PrintFriendly -
You can send both PDF and EPUB files to your Kindle or Kobo eReader.
Recommended tools: Amazon‘s “Send to Kindle” and djazz‘s “Send to Kobo/Kindle” -
Support authors and libraries
✍️ If you like this and can afford it, consider buying the original, or supporting the authors directly.
📚 If this is available at your local library, consider borrowing it for free there.
Total downloads:
A “file MD5” is a hash that gets computed from the file contents, and is reasonably unique based on that content. All shadow libraries that we have indexed on here primarily use MD5s to identify files.
A file might appear in multiple shadow libraries. For information about the various datasets that we have compiled, see the Datasets page.
For information about this particular file, check out its JSON file. Live/debug JSON version. Live/debug page.