Java核心技术卷一(中文第九版)--高清版.pdf

所需积分/C币:39 2017-08-20 09:14:44 34.78MB PDF
收藏 收藏 2
举报

Java核心技术卷一(中文第九版)--高清版.pdf
http://showmecode.cn/inks/book 序设计的基础知识。卷∏—高级特性,涉及企业特性以及高级的用户界面程序设计。其中 详细讨论下列内容 文件与流 数据库 分布式对象 高级GUI组件 本地方法 国际化 XML处理 Java beans 网络编程 注释 ·高级图形 在编写本书的过程中,难免出现错误和不准确之处。我们很想知道这些错误,当然,也 希望同一个问题只被告知一次。我们在网页htp: horstmann com/ oreAna中以列表的形式给 出了常见的问题、bug修正和解决方法。在勘误页(建议先阅读遍)最后附有用来报告bug 并提出修改意见的表单。如果我们不能回答每一个问题或没有及时回复,请不要失望。我们 会认真地阅读所有的来信,感谢您的建议使本书后续的版本更清晰、更有指导价值 关于本书 第1章概述Java与其他程序设计语言不同的性能。解释这种语言的设计初衷,以及在哪 些方面达到了预期的效果。然后,简要叙述Java诞生和发展的历史。 第2章详细地论述如何下载和安装JDK以及本书的程序示例。然后,通过编译和运行 三个典型的Java程序(一个控制台应用、一个图形应用、一个 applet),指导读者使用简易的 JDK、可启用Java的文本编辑器以及一个 Java Ide 第3章开始讨论Java语言。这一章涉及的基础知识有变量、循环以及简单的函数。对于 C或C++程序员来说,学习这一章的内容将会感觉一帆风顺,因为这些语言特性的语法本 质上与C语言相同。对于没有C语言程序设计背景,但使用过其他程序设计语言(如 Visual Basic)的程序员来说,仔细地阅读这一章是非常必要的。 面向对象程序设计( Object-Oriented Programming,OOP)是当今程序设计的主流,而 Java是一种完全面向对象的语言。第4章将介绍面向对象两个基本成分中最重要的—封 装,以及Java语言实现封装的机制,即类与方法。除了Java语言规则之外,还对如何正确 地进行OOP设计给出了忠告。最后,介绍奇妙的 javadoc工具,它将代码注释转换为超链接 的网页。熟悉C++的程序员可以快速地浏览这一章,而没有面向对象程序设计背景的程序 员,应在进一步学习Java之前花一些时间了解OOP的有关概念 类与封装仅仅是OOP中的一部分,第5章将介绍另一部分——继承。继承使程序员可 以使用现有的类,并根据需要进行修改。这是Java程序设计中的基础。Java中的继承机制与 C++的继承机制十分相似。C++程序员只需关注两种语言的不同之处即可 第6章展示如何使用Java的接口。接口可以让你的理解超越第5章的简单继承模型。掌 握接口的使用将可以获得Java的完全的面向对象程序设计的能力。本章还将介绍Java的一 个有用的技术特性—内部类。内部类可以使代码更清晰、更简洁。 http://showmecode.cn/inks/book 第7章开始细致地讨论应用程序设计。每一个Java程序员都应该了解一些图形用户界面 程序设计的知识,本卷包含了其中的基本内容部分。本章将展示如何制作窗口、如何在窗口 中绘图、如何用几何图形作画、如何用多种字体格式化文本以及如何显示图像 第8章详细讨论AWr( Abstract Window Toolkit)的事件模型。我们将介绍如何编写代码来 响应鼠标点击或按键等事件。同时,还将介绍如何处理基本的GU元素,比如:按钮和面板 第9章详细讨论 Swing GUI工具箱。 Swing工具箱允许建立一个跨平台的图形用户界面 本章将介绍如何建立各种各样的按钮、文本组件、边框、滑块、列表框、菜单以及对话框 等。一些更高级的组件将在卷I中讨论c 第10章阐述如何部署自己编写的应用程序或 applet.在这里将描述如何将应用程序打包 到JAR文件中,以及如何使用Java的 Web Start和 applet机制在 Internet上发布应用程序。 最后,将解释Java程序部署之后如何存储和检索配置信息 第11章讨论异常处理,即Java的健壮机制,它用于处理调试好的程序可能出现意外的 情况。异常提供了一种将正常的处理代码与错误处理代码分开的有效手段。当然,即使程序 包含处理所有异常情况的功能,依然有可能无法按照预计的方式工作。这一章的后半部分将 给出大量的实用调试技巧。最后,将指导你完成一个完整的示例调试过程 第12章概要介绍泛型程序设计,这是 Java se50的一项重要改进。泛型程序设计使得 程序拥有更好的可读性和安全性。在这里,将展示如何使用强类型机制,而舍弃不安全的强 制类型转换,以及如何处理与旧版本Java兼容而带来的复杂问题 第13章介绍Java平台的集合框架。当需要将大量对象收集到一起,并在以后要对它们 进行检索时,可能会想要使用集合,这是目前最为合适的做法,它取代了将这些元素放置在 数组中的做法。本章将介绍如何使用预先建立好的标准集合。 第14章是本书的最后一章。在这一章中将介绍多线程,这是一种可以让程序任务并行 执行的特性(线程是程序中的控制流),并阐述如何建立线程、如何处理线程的同步问题。从 Java se50开始,多线程有了很大的改进,本章将介绍所有这些新的机制。 附录列出了Java语言的保留字 约定 本书使用以下图标表示特殊内容。 自注释:“注释”信息会用这样的“注释”图标标识。 提示:“提示”信息会用这样的“提示”图标标识 ◆警告:对于可能出现的危险,我们用一个“警告”图标做出警示。 C++注释:在本书中有许多用来解释Java与C++之间不同的C艹注释。对于没有C+ 程序设计背景,或者不擅长C十十程序设计、把它当做一场疊梦不愿再想起的程序员来 说,可以跳过这些注释, http://showmecode.cn/inks/book 鰲鑾鬆鱗,惑 Java带有一个很大的程序设计库,即应用程序编程接口。第一次使用API调用时,将会 在该节的结尾给出一个概要描述。这些描述十分通俗易懂,希望能够比联机API文档提供更 多的信息。类、接口或方法名后面的编号是介绍该特性的JDK版本号 程序(源代码见本书网站)以如下形式给出 示例代码 本书的网站htp:/ horstmann conl/corejava以压缩的形式提供了书中的所有示例代码。可 以用熟悉的解压缩程序或者用Java开发工具箱中的ja实用程序解压这个文件。有关安装 Java开发工具箱和示例程序的详细信息请参看第2章 http:/showmecode.cn/inks/book 致谢 写本书需要投入大量的精力,改写一本书也并不像想象的那样轻松,尤其是Java一直 在持续不断地更新。编著一本书让很多人耗费了很多心血,在此衷心地感谢《Java核心技术》 编写小组的每一位成员。 公司的许多人提供了非常有价值的帮助,却甘愿做幕后英雄。在此,我希 望每一位都能够知道我对他们努力的感恩。与以往-样,我要真诚地感谢我的编辑, Prentice Ha公司的 Greg doench,从本书的写作到出版一直给予了指导,同时感谢那些不知其姓名 的为本书做出贡献的幕后人士。非常感谢 Julie Nahil在图书制作方面给予的支持,还要感谢 Dmitry Kirsanoⅴ和 Alina Kirsanovⅵa完成手稿的编辑和排版工作。我还要感谢早期版本中我的 合作者, Gary Cornel,他已经转向其他的事业 感谢早期版本的许多读者,他们指出了许多令人尴尬的错误并给出了许多具有建设性的 修改意见。我还要特别感谢本书优秀的审阅小组,他们仔细地审阅我的手稿,使本书减少了 许多错误。 本书及早期版本的审阅专家包括: Chuck allison( Utah valley大学)、 Lance andersen ( Oracle)、 Alec beaton(IBM)、 Cliff Berg、 Joshua bloch、 David Brown、 Corky Cartwright、 Frank Cohen( Push ToTest). Chris Crane( dev Solution ) Dr. Nicholas J De Lillo( Manhatta 学院)、 Rakesh Dhoopar( Oracle)、 David Geary( Clarity Training)、 Jim gish( Oracle)、 Brian Goetz( Oracle)、 Angela Gordon、 Dan gordon( Electric Cloud)、 Rob gordon、 John Cray( Hartford 大学)、CameronGregory(slabs.com)、MartyHall(coreservlets.com、Inc.)ⅤincentHardy ( Adobe Systems)、 Dan Harkey( San Jose州立大学)、 william Higgins(IBM)Ⅴ adimir Ivanovic ( PointBase)、 Jerry Jackson( CA Technologies)、 Tim Kimmet( Walmart)、 Chris laffra、 Charlie Lai(Aple)、 Angelika Langer、 Doug Langston、 Hang Lau(McGi学)、 Mark lawrence Doug Lea( SUNY OSwego ) Gregory Longshore, Bob Lynch( Lynch Associates ) Philip Milne(顾问)、 Mark morrissey( Oregon研究院)、 Mahesh Neelakanta( Florida Atlantic大学) Hao pham、 Paul philion、 Blake Ragsdell、 Stuart Reges( Arizona大学) Rich rosen( Interactive Data Corporation)、 Peter sanders(法国尼斯ESSI大学), Paul Sanghera博士( San Jose州立 大学和 Brooks学院)、 Paul Sevinc( Teamup AG)、 Devang Shah( Sun Microsystems)、 Bradley A. Smith、 Steven Stelting( Oracle)、 Christopher Taylor、 Luke Taylor( Valtech)、 George Thiruvathukal、 Kim Topley( StreamingEdge)、 Janet traub、 Paul Tymal(顾问)、 Peter van der Linden( Motorola Mobile Devices), Burt Walsh, Dan Xu(Oracle)Fa John Zavgren (Oracle) Cay horstmann 2012年9月于加州旧金山 http://showmecode.cn/inks/book 第1章Java程序设计概述 ▲Java程序设计平台 ▲Java发展简史 Java“白皮书”的关键术语 关于Java的常见误解 ▲ Java applet与 Internet 1996年Java第一次发布就引起了人们的极大兴趣。关注Java的人士不仅限于计算机出 版界,还有诸如《纽约时报》、《华盛顿邮报》、《商业周刊》这样的主流媒体。Java是第一种 也是唯一一种在 National Public Radio上占用了10分钟时间来进行介绍的程序设计语言,并 且还得到了$1000000的风险投资基金。这些基金全部用来支持用这种特别的计算机语言 开发的产品。重温那些令人兴奋的日子是很有意思的。本章将简要地介绍一下Java语言的发 展历史。 1.1Java程序设计平台 本书的第1版是这样描写Java的:“作为一种计算机语言,Java的广告词确实有点夸大 其辞。然而,Java的确是一种优秀的程序设计语言。作为一个名副其实的程序设计人员,使 用Java无疑是一个好的选择。有人认为:Java将有望成为一种最优秀的程序设计语言,但还 需要一个相当长的发展时期。一旦一种语言应用于某个领域,与现存代码的相容性问题就摆 在了人们的面前。” 我们的编辑手中有许多这样的广告词。这是Sun公司高层的某位不愿透露姓名的人士提 供的。然而,现在看起来,当初的这些预测还是有一定准确性的。Java有许多非常优秀的 语言特性,本章稍后将会详细地讨论这些特性。由于相容性这个严峻的问题确实存在于现实 中,所以,或多或少地还是有一些“累赘”被加到语言中,这就导致Java并不如想象中的那 么完美无瑕。 但是,正像我们在第1版中已经指出的那样,Java并不只是一种语言。在此之前出现的 那么多种语言也没有能够引起那么大的轰动。Java是一个完整的平台,有一个庞大的库,其 中包含了很多可重用的代码和一个提供诸如安全性、跨操作系统的可移植性以及自动垃圾收 集等服务的执行环境。 作为一名程序设计人员,常常希望能够有一种语言,它具有令人赏心悦目的语法和易于 理解的语义(C++不是这样的)。与许多其他的优秀语言一样,Java恰恰满足了这些要求。有 些语言提供了可移植性、垃圾收集等,但是,没有提供一个大型的库。如果想要有奇特的绘 图功能、网络连接功能和数据库存取功能就必须自己动手编写代码。JaVa这种功能齐全的出 *http:yshowmecode.cn/links/book 色语言,具有髙质量的执行环境以及庞大的库。正是因为它集多种优势于一身,所以对广大 的程序设计人员有着不可抗拒的吸引力 12Java“白皮书”的关键术语 Java的设计者已经编写了颇有影响力的“白皮书”,用来解释设计的初衷以及完成的情 况,并且发布了一个简短的摘要。这个摘要用下面11个关键术语进行组织: 1)简单性 7)可移植性 2)面向对象 8)解释型 3)网络技能( Network- Savvy)9)高性能 4)健壮性 10)多线程 5)安全性 1)动态性 6)体系结构中立 本节将论述下列主要内容 给出白皮书中对每个关键术语的概述,这是Java设计者对相关术语的论述 凭借Java当前版本的使用经验,给出对这些术语的理解。 自注释:写这本书时,白皮书可以在www.oracle.com/technetwork/java/langenv-14015Ihtml 上找到。对于11个关键术语的论述请参看htt:ibs. oracle. com/ eatures/tenyeares/volcd/ papers/gOsling.pdf 121简单性 人们希望构建一个无须深奥的专业训练就可以进行编程的系统,并且要符合当 今的标准惯例。因此,尽管人们发现C++不太适用,但在设计Java的时候还是尽 可能地接近C艹十,以便系统更易于理解。Java剔除了C艹中许多很少使用、难以理 解、易混淆的特性。在目前看来,这些特性带来的麻烦远远多于其带来的好处。 的确,Java语法是C++语法的一个“纯净”版本。这里没有头文件、指针运算(甚至指 针语法)、结构、联合、操作符重载、虚基类等(请参阅本书各个章节给出的C++注释,那 里比较详细地解释了Java与C++之间的区别)。然而,设计者并没有试图清除C++中所有不 适当的特性。例如, switch语句的语法在Java中就没有改变。如果知道C++就会发现可以 轻而易举地将其转换成Java。 如果已经习惯于使用可视化的编程环境(例如 Visual Basic),你就不会觉得Java简单了 Java有许多奇怪的语法(尽管掌握其要领并不需要很长时间),更重要的是,使用Java需要 自己编写大量的程序。Ⅴ isual basic的魅力在于它的可视化设计环境几乎自动地为应用程序提 供了大量的基础结构。而使用Java实现同样的功能却需要手工编制代码,通常代码量还相当 大。然而,已经有一些支持“拖放”风格程序开发的第三方开发环境 http://showmecode.cn/binks/book3 简单的另一个方面是小。Java的目标之一是攴持开发能够在小型机器上独立运 行的软件。基本的解释器以及类攴持大约仅为40KB;再加上基础的标准类库和对 线程的支持(基本上是一个自包含的微内核)大约需要增加175KB。 在当时,这是一个了不起的成就。当然,由于不断的扩展,类库已经相当庞大了。现在 有一个独立的具有较小类库的Java微型版( Jaya Micro edition)用于嵌入式设备。 122面向对象 简单地讲,面向对象设计是一种程序设计技术。它将重点放在数据(即对象) 和对象的接口上。用木匠打一个比方,一个“面向对象的”木匠始终关注的是所制 作的椅子,第二位才是所使用的工具;一个“非面向对象的”木匠首先考虑的是所 用的工具。在本质上,Java的面向对象能力与C+是一样的。 在过去的40年里,面向对象已经证明了自身的价值,一种现代的程序设计语言不使用 面向对象技术简直让人难以置信。的确,Java的面向对象特性与C++旗鼓相当。Java与C++ 的主要不同点在于多继承,在Java中,取而代之的是简单的接口概念,以及Java的元类 模型(有关这部分内容将在第5章中讨论)。 自注释:如果没有使用面向对象程序设计话害的经验,你一定要仔细阅读第4章~第6章。 这些章节解释了什么是面向对象程序设计以及在编程实现复杂的项目时为什么比传统的 像C或 Basic这样的面向过程的语言更加有效。 123网络技能 Java有一个扩展的例程库,用于处理像HTTP和FTP之类的TCPP协议。Java 应用程序能够通过URL打开和访问网络上的对象,其便捷程度就好像访问本地文 件一样 人们已经看到Java的网络能力强大且易于使用。任何曾经试图使用其他语言进行网络编 程的人都会惊呼Java竟然把类似打开 socket连接这类繁重的任务都变得如此简单(在本书的 卷Ⅱ中介绍网络连接)。另外,远程方法调用机制使得分布式对象之间可以进行通信(也将 在卷I中介绍)。 124健壮性 Java的设计目标之一在于使得Java编写的程序具有多方面的可靠性。Java投入 了大量的精力进行早期的问题检测、后期动态的(运行时)检测,并消除了有出错 倾向的状态……Java和C艹最大的不同在于Java采用的指针模型可以消除重写内 存和损坏数据的可能性 这个特性非常有用。Java编译器能够检测许多在其他语言中仅在运行时刻才能够检测出 来的问题。至于第二点,对于曾经花费几个小时来检查由于指针bug而引起内存冲突的人来 attpilshowmecode. cn/inks/book 说,一定很喜欢Java的这一特性 如果曾经只使用过Ⅴ sual basic这类没有显式指针的语言,你就会感觉这么说似乎有些 小题大做了。然而,C程序员就没有这样幸运了。他们需要利用指针存取字符串、数组、对 象,甚至文件。在 sual Basic中,根本不必使用指针访问这些实体,也不必关心有关内存 分配的问题。另一方面,在没有指针的语言中,许多数据结构很难实现。Java具有双方的优 势。它不需要使用指针构造诸如字符串、数组这样的结构。如果必要的话,它也能够具有指 针的能力,如链表。Java绝对是安全的,其原因是永远不会存取一个“坏的”指针,造成内 存分配的错误,也不必防范内存泄漏。 125安全性 JaⅦa适用于网络/分布式环境。为了达到这个目标,在安全方面投入了很大精 力。使用Java可以构建防病毒、防篡改的系统 本书的第1版曾经说过:“永远不要把话说绝!”事实证明这是正确的。在Java开发工具 箱第1版启用后不久,普林斯顿大学的一些安全专家就发现了在JDK1.0中的某些安全特性 方面存在着一些非常隐蔽的bug。 Sun Microsystems大力支持对Java的安全性的研究,制定 了供人们使用的规范,实现了虚拟机和安全库,并迅速地处理了所有已知的安全bug。在任 何情况下,蒙骗Java的安全机制都是十分困难的。现在,发现bug的技术越来越强,数目越 来越少。 从一开始,Java就设计成能够防范各种攻击,其中包括 运行时堆栈溢出。如,蠕虫等病毒常用的攻击手段 在自己的处理空间之外破坏内存。 未经授权读写文件。 许多安全特性相继不断地加入到Java中。自从 Java I.l问世以来,Java就有了数字签名 类( digitally signed class的概念(请参看卷Ⅱ)。通过数字签名类,可以确定类的作者。如 果信任这个类的作者,这个类就可以在你的机器上拥有更多的权限。 注释:来自微软的基于 Active技术的竞争代码传输机制,其安全性完全依赖于数字签 名。这显然是不够的,因为微软自身产品的任何用户都可以证实,来自知名提供商的程 序会崩溃并对系统产生危害。Java的安全机制比 ActiveX要强得多,因为它是在应用程 序运行时加以控制并制止恶意性破坏的 1.26体系结构中立 编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要 有Java运行时系统,就可以在许多处理器上运行。Java编译器通过生成与特定的计 算杌体系结构无关的宇节码指令来实现这一特性。精心设计的字节码不仅可以很容 易地在任何杋器上解释执行,而且还可以迅速地翻译成本地机器的代码

...展开详情
试读 127P Java核心技术卷一(中文第九版)--高清版.pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    一个资源只可评论一次,评论内容不能少于5个字
    LLinEE 还不错的资源 虽然我还没下载
    2018-02-05
    回复
    西施有毒SV 还没下下来就说已经下好了,还要来个评论再下一次
    2017-10-13
    回复
    关注 私信 TA的资源
    上传资源赚积分,得勋章
    最新推荐
    Java核心技术卷一(中文第九版)--高清版.pdf 39积分/C币 立即下载
    1/127
    Java核心技术卷一(中文第九版)--高清版.pdf第1页
    Java核心技术卷一(中文第九版)--高清版.pdf第2页
    Java核心技术卷一(中文第九版)--高清版.pdf第3页
    Java核心技术卷一(中文第九版)--高清版.pdf第4页
    Java核心技术卷一(中文第九版)--高清版.pdf第5页
    Java核心技术卷一(中文第九版)--高清版.pdf第6页
    Java核心技术卷一(中文第九版)--高清版.pdf第7页
    Java核心技术卷一(中文第九版)--高清版.pdf第8页
    Java核心技术卷一(中文第九版)--高清版.pdf第9页
    Java核心技术卷一(中文第九版)--高清版.pdf第10页
    Java核心技术卷一(中文第九版)--高清版.pdf第11页
    Java核心技术卷一(中文第九版)--高清版.pdf第12页
    Java核心技术卷一(中文第九版)--高清版.pdf第13页
    Java核心技术卷一(中文第九版)--高清版.pdf第14页
    Java核心技术卷一(中文第九版)--高清版.pdf第15页
    Java核心技术卷一(中文第九版)--高清版.pdf第16页
    Java核心技术卷一(中文第九版)--高清版.pdf第17页
    Java核心技术卷一(中文第九版)--高清版.pdf第18页
    Java核心技术卷一(中文第九版)--高清版.pdf第19页
    Java核心技术卷一(中文第九版)--高清版.pdf第20页

    试读已结束,剩余107页未读...

    39积分/C币 立即下载 >