
查看其他详细信息:http://www.china-pub.com/43010
【原 书 名】 Core Java Volume I--Fundamentals (8th Edition)
【原出版社】 Prentice Hall PTR
【作 者】(美)Cay S. Horstmann;Gary Cornell
【出 版 社】 人民邮电出版社 【书 号】 9787115188335
【出版日期】 2008 年11月 【开 本】 16开 【页 码】 836 【版 次】8-1
市场价:¥99.00 pub价:¥74.25(
【编辑推荐】
一本备受广大Java程序设计人员的青睐,畅销不衰,Java的经典书籍
第8版针对Java SE 6平台进行了全面更新,囊括了Java 2平台、标准版(J2SE)的全部基础知识,提供了大量完整且具有实际意义的应用实例
第8版针对Java SE 6平台进行了全面更新,囊括了Java 2平台、标准版(J2SE)的全部基础知识,提供了大量完整且具有实际意义的应用实例
【内容简介】
本书第1版出版以来,一直备受广大Java程序设计人员的青睐,畅销不衰,是Java经典书籍。第8版针对Java SE 6平台进行了全面更新,囊括了Java 2平台、标准版(J2SE)的全部基础知识,提供了大量完整且具有实际意义的应用实例,详细介绍了Java语言基础知识、面向对象程序设计、接口与内部类、事件监听器模型、Swing图形用户界面程序设计、打包应用程序、异常处理、登录与调试、泛型程序设计、集合框架、多线程等内容。.
书中示例程序经过精心设计,不但具有实用价值,而且易于阅读理解,可以作为初学者自己编写程序的良好开端,也能够帮助程序员快速地了解Java SE 6的新特性,或迅速从其他语言转向Java语言。...
【前言】
致读者.
1995年底,Java语言在Internet舞台上一亮相便名声大噪。其原因在于它将有望成为通过信息将用户联系起来的“万能胶”,而不论这些信息来自于Web服务器、数据库、信息提供商,还是任何其他渠道。事实上,就发展前景而言,Java的地位是独一无二的。它是一种完全可以信赖的程序设计语言,得到了除微软之外所有厂家的认可。其固有的可靠性与安全性不仅令Java程序员放心,也令使用Java程序的用户放心。Java内建了对网络编程、数据库连接、多线程等高级程序设计任务的支持。
1995年以来,SUN MicroSystems公司已经发布了Java开发工具箱(Java Development Kit)的7个主要版本。在过去的11年中,应用程序接口(API)已经从200个类扩展到3000个类,并覆盖了用户界面构建、数据库管理、国际化、安全性以及XML处理等各个不同的领域。
本书是《Java核心技术》第8版的卷I。自《Java核心技术》出版以来,每个新版本都尽可能快地跟上Java开发工具箱发展的步伐,并重新改写部分内容,以适应Java的最新特性。在这一版中,已经反映了Java标准版(Java SE 6)的特性。
与前几版一样,本版仍然将读者群定位在那些打算将Java应用到实际工程项目中的程序设计人员。本书假设读者是一名具有程序设计语言(除Java之外)坚实背景知识的程序设计人员,并且不希望书中充斥着玩具式的示例(诸如烤面包机、动物园的动物或神经质的跳动文本)。这些内容绝对不会在本书中出现。本书的目标是让读者充分地理解书中介绍的Java语言及Java类库的相关特性,而不会产生任何误解。
在本书中,我们选用大量的示例代码演示所讨论的每一个语言特性和类库特性。我们有意使用简单的示例程序以突出重点,然而,其中的大部分既不是赝品也没有偷工减料。
它们将成为读者自己编写代码的良好开端。
我们假定读者愿意(甚至渴望)学习Java提供的所有高级特性。本书将详细介绍下列内容:
·面向对象程序设计;
·反射与代理;
·接口与内部类;
·事件监听器模型;
·使用Swing UI工具箱进行图形用户界面设计;
·异常处理;
·泛型程序设计;
·集合框架;
·并行操作。
随着Java类库的爆炸式增长,一本书无法涵盖程序员需要了解的所有Java特性。因此,我们决定将本书分为两卷。卷I(本卷)集中介绍Java的基本概念以及图形用户界面程序设计的基础知识。卷II——高级特性,涉及企业特性以及高级的用户界面程序设计,其中包含下列内容:
·文件与流;
·分布式对象;
·数据库;
·高级GUI组件;
·本地方法;
·XML处理;
·网络编程;
·高级图形;
·国际化;
·JavaBean;
·注释。
在这一版中,我们对两卷中的内容进行了调整,特别是,鉴于多线程的日趋重要,我们将它编入卷I中,并以摩尔定律作为结尾。
在编写本书的过程中,难免出现错误和不准确之处。我们很想知道这些错误,当然,也希望同一个问题只被告知一次。我们在网页http://horstmann.coni/coreJava.html中以列表的形式给出了常见的问题、bug修正和出错位置。在勘误页面(建议先阅读一遍)最后附有用宋报告bug并提出修改意见的表单。如果我们不能回答每一个问题或没有及时回复,请不要失望。我们会认真地阅读所有的来信,感谢您的建议使本书后续的版本更清晰、更有指导价值。
关于本书
第1章概述Java与其他程序设计语言不同的性能,解释这种语言的设计初衷,以及在哪些方面达到了预期的效果,然后简述了Java诞生和发展的历史。..
第2章详细地论述如何下载和安装JDK以及本书的程序示例。然后,通过编译和运行3个典型的Java程序(一个控制台应用、一个图形应用和一个applet),指导读者使用简易的JDK、可启用Java的文本编辑器和一个Java IDE。
第3章开始讨论Java语言。这一章涉及的基础知识有变量、循环以及简单的函数。对于C或C++程序员来说,学习这一章的内容将会感觉一帆风顺,因为这些语言特性的语法本质上与C语言相同。对于没有C语言程序设计背景,但使用过其他程序设计语言(Visual Basic)的程序员,仔细地阅读这一章是非常必要的。
第4章介绍面向对象程序设计(Obiect-Oriented Programming,OOP)是当今程序设计的主流,而Java是完全面向对象的。本章将介绍面向对象两个基本成分中最重要的——封装,以及Java语言实现封装的机制,即类与方法。除了Java语言规则之外,还对如何正确地进行OOP设计给出了忠告。最后,介绍奇妙的Javadoc工具,它将代码注释转换为超链接的网页。熟悉C++的程序员可以快速地浏览这一章,而没有面向对象程序设计背景的程序员,应在进一步学习Java之前花一些时间了解OOP的有关概念。
第5章介绍OOP的另一部分——继承。继承使程序员可以使用现有的类,并根据需要进行修改。这是Java程序设计中的基础。Java中的继承机制与C++的继承机制十分相似。C++程序员只需关注两种语言的不同之处即可。
第6章展示如何使用Java的接口。接口可以让你的理解超越第5章的简单继承模型。掌握接口的使用将可以充分发挥Java的面向对象程序设计能力。本章还将介绍Java的一个有用的技术特性——内部类。内部类可以使代码更清晰、更简洁。
第7章开始细致地讨论应用程序设计。每一个Java程序员都应该了解一些图形用户界面程序设计的知识,本卷包含了其中的基本内容。本章将展示如何制作窗口、如何在窗口中绘图、如何用几何图形作画、如何用多种字体格式化文本和如何显示图像。
第8章详细讨论AWT(Abstract Window Toolkit)的事件模型。本章介绍如何编写代码来响应鼠标点击或敲击键盘等事件,同时还介绍如何处理基本的GUI元素,如按钮和面板。
第9章详细讨论Swing GUI工具箱。Swing工具箱允许建立一个跨平台的图形用户界面。本章将介绍如何建立各种各样的按钮、文本组件、边界、滑块、列表框、菜单和对话框等。
一些更高级的组件将在卷II中讨论。
第10章阐述如何部署自己编写的应用程序或applet。描述如何将应用程序打包到JAR文件中,以及如何使用Java的Web Start机制在Internet上发布应用程序。最后解释Java程部署之后如何存储、检索配置信息。
第11章讨论异常处理,即Java的健壮机制,它用于处理调试好的程序可能出现的意外情况。异常提供了一种将正常的处理代码与错误处理代码分开的有效手段。当然,即使程序包含处理所有异常情况的功能,依然有可能无法按照预计的方式工作。这一章的后半部分,将给出大量的实用调试技巧。最后,讲述如何使用各种工具完成一个示例程序。
第12章介绍泛型程序设计,这是Java SE5.0的一项重要改进。泛型程序设计使程序
拥有更好的可阅读性和安全性。本章展示如何使用强类型机制,而舍弃不安全的强制类型转换,以及如何处理与旧版本Java兼容而带来的复杂问题。
第13章介绍Java平台的集合框架。当需要将大量对象收集到一起,并在过后要对它们进行检索时,可能会想要使用最合适的方法——集合,而不仅仅是将这些元素放置在数组中。本章介绍如何使用预先建立好的标准集合。
第14章是本书的最后一章。本章介绍多线程,这是一种可以让程序任务并行执行的特性(线程是程序中的控制流),并阐述如何建立线程、如何处理线程的同步问题。从JavaSE5.0开始,多线程有了很大的改进,本章将介绍所有这些新的机制。
附录列出了Java语言的保留字。
约定
本书使用以下图标表示特殊内容。
NOTE(注释):这个图标表示为正文提供的“注释”信息。
TIP(提示):这个图标表示为正文提供的“提示”信息。
CAUTION(警告):这个图标表示为正文提供的“警告”信息。
C++NOTE(C++注释):在本书中有许多用来解释Java与C++的不同的C++注释。对于没有C++程序设计背景,或者不擅长C++程序设计的程序员,可以跳过这些注释。
(应用程序编程接口):Java带有一个很大的程序设计库,即应用程序编程接口(API)。第一次调用API时,将会在这一节的结尾给出一个概要描述,并标有API图标。这些描述十分通俗易懂,希望能够比联机API文档提供更多的信息。我们在每一个API注释特性上都标记了版本号,用来提示那些不希望使用Java“风险”版本的读者。
程序源代码按照下列格式给出:
Listing 2-4 WelcomeApplet.Java
示例代码
本书的网站http://www,phptr.conl/coreJava以压缩文件的形式提供了书中的所有示例代码。可以用相应的解压缩程序或者用Java开发工具箱中的.iar实用程序展开这个文件。有关安装Java开发工具箱和示例程序的详细信息请参看第2章。...
【目录】
1AN INTRODUCTION TO JAVA .1
Java As a Programming Platform2
The Java “White Paper” Buzzwords2
Simple3
Object Oriented3
Network-Savvy4
Robust4
Secure5
Architecture Neutral5
Portable6
Interpreted6
High Performance6
Multithreaded7
Dynamic7
Java Applets and the Internet7
A Short History of Java9
Common Misconceptions about Java11
2THE JAVA PROGRAMMING ENVIRONMENT15
Installing the Java Development Kit16
Downloading the JDK16
Setting the Execution Path18
Installing the Library Source and Documentation20
Installing the Core Java Program Examples20
Navigating the Java Directories21
Choosing a Development Environment21
Using the Command-Line Tools22
Troubleshooting Hints24
Using an Integrated Development Environment25
Locating Compilation Errors27
Running a Graphical Application28
Building and Running Applets31
3FUNDAMENTAL PROGRAMMING STRUCTURES IN JAVA35
A Simple Java Program36
Comments39
Data Types40
Integer Types40
Floating-Point Types41
The char Type42
The boolean Type44
Variables44
Initializing Variables45
Constants46
Operators46
Increment and Decrement Operators47
Relational and boolean Operators48
Bitwise Operators49
Mathematical Functions and Constants49
Conversions between Numeric Types51
Casts51
Parentheses and Operator Hierarchy52
Enumerated Types53
Strings53
Substrings54
Concatenation54
Strings Are Immutable54
Testing Strings for Equality56
Code Points and Code Units56
The String API57
Reading the On-Line API Documentation59
Building Strings62
Input and Output63
Reading Input63
Formatting Output65
File Input and Output69
Control Flow71
Block Scope71
Conditional Statements72
Loops76
Determinate Loops80
Multiple Selections——The switch Statement84
Statements That Break Control Flow86
Big Numbers88
Arrays90
The “for each” Loop91
Array Initializers and Anonymous Arrays92
Array Copying93
Command-Line Parameters95
Array Sorting95
Multidimensional Arrays99
Ragged Arrays102
4OBJECTS AND CLASSES105
Introduction to Object-Oriented Programming106
Classes107
Objects108
Identifying Classes108
Relationships between Classes109
Using Predefined Classes111
Objects and Object Variables111
The GregorianCalendar Class of the Java Library114
Mutator and Accessor Methods115
Defining Your Own Classes122
An Employee Class122
Use of Multiple Source Files125
Dissecting the Employee Class125
First Steps with Constructors126
Implicit and Explicit Parameters127
Benefits of Encapsulation129
Class-Based Access Privileges131
Private Methods132
Final Instance Fields132
Static Fields and Methods132
Static Fields132
Static Constants133
Static Methods134
Factory Methods135
The main Method135
Method Parameters138
Object Construction144
Overloading144
Default Field Initialization145
Default Constructors145
Explicit Field Initialization146
Parameter Names147
Calling Another Constructor148
Initialization Blocks148
Object Destruction and the finalize Method152
Packages153
Class Importation153
Static Imports155
Addition of a Class into a Package155
Package Scope158
The Class Path160
Setting the Class Path161
Documentation Comments162
Comment Insertion162
Class Comments163
Method Comments164
Field Comments164
General Comments164
Package and Overview Comments165
Comment Extraction166
Class Design Hints167
5INHERITANCE171
Classes, Superclasses, and Subclasses172
Inheritance Hierarchies179
Polymorphism179
Dynamic Binding181
Preventing Inheritance: Final Classes and Methods183
Casting184
Abstract Classes186
Protected Access191
Object: The Cosmic Superclass192
The equals Method193
Equality Testing and Inheritance194
The hashCode Method196
The toString Method198
Generic Array Lists204
Accessing Array List Elements206
Compatibility between Typed and Raw Array Lists210
Object Wrappers and Autoboxing211
Methods with a Variable Number of Parameters214
Enumeration Classes215
Reflection217
The Class Class217
A Primer on Catching Exceptions219
Using Reflection to Analyze the Capabilities of Classes221
Using Reflection to Analyze Objects at Runtime226
Using Reflection to Write Generic Array Code231
Method Pointers!234
Design Hints for Inheritance238
6INTERFACES AND INNER CLASSES241
Interfaces242
Properties of Interfaces247
Interfaces and Abstract Classes248
Object Cloning249
Interfaces and Callbacks255
Inner Classes258
Use of an Inner Class to Access Object State260
Special Syntax Rules for Inner Classes263
Are Inner Classes Useful? Actually Necessary? Secure? 264
Local Inner Classes266
Accessing final Variables from Outer Methods267
Anonymous Inner Classes269
Static Inner Classes271
Proxies275
Properties of Proxy Classes279
7GRAPHICS PROGRAMMING281
Introducing Swing282
Creating a Frame285
Positioning a Frame288
Frame. Properties290
Determining a Good Frame. Size290
Displaying Information in a Component..294
Working with 2D Shapes299
Using Color307
Using Special Fonts for Text310
Displaying Images318
8EVENT HANDLING323
Basics of Event Handling324
Example: Handling a Button Click326
Becoming Comfortable with Inner Classes331
Creating Listeners Containing a Single Method Call334
Example: Changing the Look and Feel334
Adapter Classes338
Actions342
Mouse Events349
The AWT Event Hierarchy357
Semantic and Low-Level Events358
9USER INTERFACE COMPONENTS WITH SWING361
Swing and the Model-View-Controller Design Pattern362
Design Patterns362
The Model-View-Controller Pattern363
A Model-View-Controller Analysis of Swing Buttons367
Introduction to Layout Management368
Border Layout371
Grid Layout373
Text Input377
Text Fields378
Labels and Labeling Components379
Password Fields381
Text Areas381
Scroll Panes382
Choice Components385
Checkboxes385
Radio Buttons388
Borders392
Combo Boxes396
Sliders400
Menus406
Menu Building406
Icons in Menu Items408
Checkbox and Radio Button Menu Items409
Pop-Up Menus410
Keyboard Mnemonics and Accelerators412
Enabling and Disabling Menu Items414
Toolbars419
Tooltips421
Sophisticated Layout Management424
The Grid Bag Layout426
Group Layout436
Using No Layout Manager445
Custom Layout Managers446
Traversal Order450
Dialog Boxes452
Option Dialogs453
Creating Dialogs462
Data Exchange467
File Dialogs474
Color Choosers485
10DEPLOYING APPLICATIONS AND APPLETS493
JAR Files494
The Manifest495
Executable JAR Files496
Resources497
Sealing500
Java Web Start501
The Sandbox504
Signed Code505
The JNLP API507
Applets516
A Simple Applet516
The Applet HTML Tag and Its Attributes521
The object Tag524
Use of Parameters to Pass Information to Applets524
Accessing Image and Audio Files530
The Applet Context531
Storage of Application Preferences539
Property Maps539
The Preferences API544
11EXCEPTIONS, LOGGING, ASSERTIONS, AND DEBUGGING551
Dealing with Errors552
The Classification of Exceptions553
Declaring Checked Exceptions555
How to Throw an Exception557
Creating Exception Classes558
Catching Exceptions559
Catching Multiple Exceptions561
Rethrowing and Chaining Exceptions562
The finally Clause563
Analyzing Stack Trace Elements566
Tips for Using Exceptions568
Using Assertions571
Assertion Enabling and Disabling572
Using Assertions for Parameter Checking573
Using Assertions for Documenting Assumptions574
Logging575
Basic Logging575
Advanced Logging576
Changing the Log Manager Configuration578
Localization579
Handlers579
Filters583
Formatters583
A Logging Recipe583
Debugging Tips591
Using a Console Window597
Tracing AWT Events598
Letting the AWT Robot Do the Work603
Using a Debugger607
12GENERIC PROGRAMMING613
Why Generic Programming?614
Who Wants to Be a Generic Programmer?615
Definition of a Simple Generic Class616
Generic Methods618
Bounds for Type Variables619
Generic Code and the Virtual Machine621
Translating Generic Expressions622
Translating Generic Methods623
Calling Legacy Code625
Restrictions and Limitations626
Type Parameters Cannot Be Instantiated with Primitive Types626
Runtime Type Inquiry Only Works with Raw Types626
You Cannot Throw or Catch Instances of a Generic Class626
Arrays of Parameterized Types Are Not Legal627
You Cannot Instantiate Type Variables628
Type Variables Are Not Valid in Static Contexts of Generic Classes629
Beware of Clashes After Erasure629
Inheritance Rules for Generic Types630
Wildcard Types632
Supertype Bounds for Wildcards634
Unbounded Wildcards636
Wildcard Capture636
Reflection and Generics640
Using Class
Generic Type Information in the Virtual Machine641
13COLLECTIONS649
Collection Interfaces650
Separating Collection Interfaces and Implementation650
Collection and Iterator Interfaces in the Java Library653
Concrete Collections658
Linked Lists659
Array Lists668
Hash Sets668
Tree Sets672
Object Comparison673
Queues and Deques678
Priority Queues679
Maps680
Specialized Set and Map Classes685
The Collections Framework689
Views and Wrappers693
Bulk Operations699
Converting between Collections and Arrays700
Algorithms700
Sorting and Shuffling701
Binary Search704
Simple Algorithms705
Writing Your Own Algorithms706
Legacy Collections707
The Hashtable Class708
Enumerations708
Property Maps709
Stacks709
Bit Sets710
14MULTITHREADING715
What Are Threads?716
Using Threads to Give Other Tasks a Chance722
Interrupting Threads728
Thread States730
New Threads731
Runnable Threads731
Blocked and Waiting Threads731
Terminated Threads733
Thread Properties733
Thread Priorities733
Daemon Threads734
Handlers for Uncaught Exceptions735
Synchronization736
An Example of a Race Condition736
The Race Condition Explained740
Lock Objects742
Condition Objects745
The synchronized Keyword750
Synchronized Blocks754
The Monitor Concept755
Volatile Fields756
Deadlocks757
Lock Testing and Timeouts760
Read/Write Locks761
Why the stop and suspend Methods Are Deprecated762
Blocking Queues764
Thread-Safe Collections771
Efficient Maps, Sets, and Queues771
Copy on Write Arrays773
Older Thread-Safe Collections773
Callables and Futures774
Executors778
Thread Pools779
Scheduled Execution783
Controlling Groups of Tasks784
Synchronizers785
Semaphores786
Countdown Latches786
Barriers787
Exchangers787
Synchronous Queues787
Example: Pausing and Resuming an Animation788
Threads and Swing794
Running Time-Consuming Tasks795
Using the Swing Worker799
The Single-Thread Rule806
Appendix809
Index ...813