Java核⼼技术 卷Ⅰ 基础知识(原书第10版)
Java核⼼技术系列
Java核⼼技术
卷Ⅰ 基础知识
(原书第10版)
Core Java Volume I—Fundamentals (10th Edition)
[美] 凯S.霍斯特曼(Cay S. Horstmann) 著
周⽴新 陈 波 叶乃⽂ 邝劲筠 杜永萍 译
图书在版编⽬(CIP)数据
Java核⼼技术 卷Ⅰ 基础知识(原书第10版) / (美)凯S. 霍斯特曼(Cay S. Horstmann)著;周⽴新等译. —北京:机械⼯业出版社,2016.8
(Java核⼼技术系列)
书名原⽂:Core Java Volume I—Fundamentals (Tenth Edition)
ISBN 978-7-111-54742-6
I. J… II. ①凯… ②周… III. JAVA语⾔-程序设计 IV. TP312.8
中国版本图书馆CIP数据核字(2016)第211440号
本书版权登记号:图字:01-2016-5145
Authorized translation from the English language edition, entitled Core Java Volume I—Fundamentals (Tenth
Edition),9780134177304 by Cay S. Horstmann, published by Pearson Education, Inc., Copyright ? 2016 Oracle and /or
its aff?iliates.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc.
Chinese Simplif?ied language edition published by Pearson Education Asia Ltd., and China Machine Press Copyright ? 2016.本书中⽂简体字版由Pearson Education(培⽣教育出版集团)授权机械⼯业出版社在中华⼈民共和国境内(不包括⾹港、澳门特别⾏政区及台湾地区)独家出版发⾏。未经出版者书⾯许可,不得以任何⽅式抄袭、复制或节录本书中的任何部分。
本书封底贴有Pearson Education(培⽣教育出版集团)激光防伪标签,⽆标签者不得销售。
Java核⼼技术 卷Ⅰ 基础知识(原书第10版)
出版发⾏:机械⼯业出版社(北京市西城区百万庄⼤街22号 :100037)
责任编辑:关 敏 责任校对:董纪丽
印 刷: 版 次:2016年9⽉第1版第1次印刷
开 本:186mm×240mm 1/16 印 张:45.5
书 号:ISBN 978-7-111-54742-6 定 价:119.00元
凡购本书,如有缺页、倒页、脱页,由本社发⾏部调换
客服热线:(010)88379426 88361066 投稿热线:(010)88379604
购书热线:(010)68326294 88379649 68995259 读者信箱:hzit@hzbook
版权所有 ? 侵权必究
封底⽆防伪标均为盗版
本书法律顾问:北京⼤成律师事务所 韩光/邹晓东
译 者 序
书写Java传奇的Sun Microsystems曾经堪称“⽇不落”帝国,但服务器市场的萎缩却让这个声名赫赫的庞⼤帝国从蓬勃⾛向落寞。在2009年被Oracle公司收购之后,Sun公司逐渐淡出了⼈们的视线,⽽与此同时,我们也在很长⼀段时间内没能看到Java当初活跃的⾝影。Java就这样退出历史舞台了吗?当然不是!从Sun公司2006年12⽉发布Java 6后,经过5年多的不懈努⼒,终于在2011年7⽉底发布了Java 7正式版。3年后,被冠名为“跳票王”的Oracle终于发布了Java 8的正式版,但对于很多开发者来说,Java 8却⽐Java 7来得更漫长⼀些。主要是因为Oracle原本计划在2013年发布正式版Java 8,却因受困于安全性的问题经过了两次“跳票”。⽆论如何,如今Java 8来了,全新“⾰命”⽽不只是“进化”的功能将会让⽆数开发者动容。
值得⼀提的是,伴随着Java的成长,《Java核⼼技术》也从第1版到第9版⼀路⾛来,得到了⼴⼤Java程序设计⼈员的青睐,成为⼀本畅销不衰的Java经典图书。经过⼏年的蛰伏,针对Java 8打造的《Java核⼼技术》第10版终于问世,这⼀版有了⼤幅的修订和更新,以反映Java 8增补、删改的内容。它将续写从前的辉煌,使⼈们能及时跟上Java前进的脚步。
本书由周⽴新、陈波等主译,程芳、刘晓兵、张练达、陈峰、江健、谢连宝、张雷⽣、杨健康、张莹参与了全书的修改整理,并完善了关键部分的翻译。全体⼈员共同完成了本书的翻译⼯作。特别需要
说明的是,按照出版社的要求,这⼀版的翻译在⽼版本基础上完成,因此尤其感谢之前版本的译者叶乃⽂、邝劲筠和杜永萍,他们的⾟勤⼯作为新版本的翻译奠定了很好的基础。
书中⽂字与内容⼒求忠实原著,不过由于译者⽔平有限,译⽂肯定有不当之处,敬请批评指正。
译者
2016年6⽉于北京
前 ⾔
致读者
1995年年底,Java语⾔在Internet舞台⼀亮相便名声⼤噪。其原因在于它将有望成为连接⽤户与信息的万能胶,⽽不论这些信息来⾃Web 服务器、数据库、信息提供商,还是任何其他渠道。事实上,就发展前景⽽⾔,Java的地位是独⼀⽆⼆的。它是⼀种完全可信赖的程序设计语⾔,得到了除微软之外的所有⼚家的认可。其固有的可靠性与安全性不仅令Java程序员放⼼,也令使⽤Java程序的⽤户放⼼。Java内建了对⽹络编程、数据库连接、多线程等⾼级程序设计任务的⽀持。
1995年以来,已经发布了Java开发⼯具包(Java Development Kit)的9个主要版本。在过去的20年
中,应⽤程序编程接⼝(API)已经从200个类扩展到超过4000个类。现在这些API覆盖了⽤户界⾯构建、数据库管理、国际化、安全性以及XML处理等各个不同的领域。
本书是《Java核⼼技术》第10版的卷Ⅰ。⾃《Java核⼼技术》出版以来,每个新版本都尽可能快地跟上Java开发⼯具箱发展的步伐,⽽且每⼀版都重新改写了部分内容,以便适应Java的最新特性。在这⼀版中,已经反映了Java 标准版(Java SE 8)的特性。
与前⼏版⼀样,本版仍然将读者定位在那些打算将Java应⽤到实际⼯程项⽬中的程序设计⼈员。本书假设读者是⼀名具有程序设计语⾔(除Java之外)坚实背景知识的程序设计⼈员,并且不希望书中充斥着玩具式的⽰例(诸如,烤⾯包机、动物园的动物或神经质的跳动⽂本)。这些内容绝对不会在本书中出现。本书的⽬标是让读者充分理解书中介绍的Java语⾔及Java类库的相关特性,⽽不会产⽣任何误解。
在本书中,我们选⽤⼤量的⽰例代码演⽰所讨论的每⼀个语⾔特性和类库特性。我们有意使⽤简单的⽰例程序以突出重点,然⽽,其中的⼤部分既不是赝品也没有偷⼯减料。它们将成为读者⾃⼰编写代码的良好开端。
我们假定读者愿意(甚⾄渴望)学习Java提供的所有⾼级特性。例如,本书将详细介绍下列内容:
⾯向对象程序设计
反射与代理
接⼝与内部类
异常处理
泛型程序设计
集合框架
事件模型
使⽤Swing UI⼯具箱进⾏图形⽤户界⾯设计
并⾏操作
随着Java类库的爆炸式增长,⼀本书⽆法涵盖程序员需要了解的所有Java特性。因此,我们决定将本书分为两卷。卷I(本书)集中介绍Java语⾔的基本概念以及图形⽤户界⾯程序设计的基础知识。卷Ⅱ(⾼级特性)涉及企业特性以及⾼级的⽤户界⾯程序设计,其中详细讨论下列内容:
流API
⽂件处理与正则表达式
数据库
XML处理
java技术介绍百度百科注释
国际化
⽹络编程
⾼级GUI组件
⾼级图形
原⽣⽅法
本书中难免出现错误和不准确之处。我们很想知道这些错误,当然,也希望同⼀个问题只被告知⼀次。我们在⽹页
horstmann/corejava中以列表的形式给出了常见的问题、bug修正和解决⽅法。在勘误页(建议先阅读⼀遍)最后附有⽤来报告bug并提出修改意见的表单。如果我们不能回答每⼀个问题或没有及时回复,请不要失望。我们会认真地阅读所有的来信,感谢您的建议使本书后续的版本更清晰、更有指导价值。
关于本书
第1章概述Java与其他程序设计语⾔不同的性能。解释这种语⾔的设计初衷,以及在哪些⽅⾯达到了预期的效果。然后,简要叙述Java诞⽣和发展的历史。
第2章详细论述如何下载和安装JDK以及本书的程序⽰例。然后,通过编译和运⾏3个典型的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的完全的⾯向对象程序设计能⼒。介绍接⼝之后,我们将转⽽介绍lambda表达式(lambda expression),这是⼀种简洁的⽅法,⽤来表述可以在以后某个时间点执⾏的代码块。本章还将介绍Java的⼀个有⽤的技术特性——内部类。
第7章讨论异常处理(exception handling),即Java的⼀种健壮机制,⽤于处理可正常运⾏程序可能出现意外的情况。异常提供了⼀种将正常处理代码与错误处理代码分开的有效⼿段。当然,即使程序
能够处理所有异常条件,仍然有可能⽆法按照预计的⽅式⼯作。这⼀章的后半部分将给出⼤量实⽤的调试技巧。
第8章概要介绍泛型程序设计。泛型程序设计可以让程序更可读、更安全。我们会展⽰如何使⽤强类型机制,⽽舍弃不安全的强制类型转换,以及如何处理与旧版本Java兼容所带来的复杂问题。
第9章讨论的是Java平台的集合框架。如果希望收集多个对象并在以后获取这些对象,就应当使⽤集合,⽽不要简单地把这些元素放在⼀个数组中,这是这种情况下最适⽤的做法。这⼀章会介绍如何充分利⽤内建的标准集合。
第10章开始介绍GUI程序设计。我们会讨论如何建⽴窗⼝、如何在窗⼝中绘图、如何利⽤⼏何图形绘图、如何采⽤多种字体格式化⽂本,以及如何显⽰图像。
第11章将详细讨论抽象窗⼝⼯具包(abstract window toolkit,AWT)的事件模型。你会看到如何编写代码来响应事件,如⿏标点击事件或按键事件。同时,你还会看到如何处理基本的GUI元素,如按钮和⾯板。
第12章详细讨论Swing GUI⼯具包。Swing⼯具包允许建⽴跨平台的图像⽤户界⾯。在这⾥你会了解各种按钮、⽂本组件、边框、滑块、列表框、菜单以及对话框的有关内容。不过,⼀些更⾼级的组件会在卷II中讨论。
第13章介绍如何将程序部署为应⽤或applet。在这⾥我们会描述如何将程序打包在JAR⽂件中,以及如何使⽤Java Web Start和applet机制在Internet上发布应⽤。另外还会解释Java程序部署之后如何存储和获取配置信息。
第14章是本书的最后⼀章,这⼀章将讨论并发,并发能够让程序任务并⾏执⾏。在当今这个时代,⼤多数处理器都有多个内核,你往往希望这些内核都在⼯作,并发是Java技术的⼀个重要⽽且令⼈振奋的应⽤。
附录列出了Java语⾔的保留字。
约定
本书使⽤以下图标表⽰特殊内容。
注释:“注释”信息会⽤这样的“注释”图标标志。
提⽰:“提⽰”信息会⽤这样的“提⽰”图标标志。
警告:对于可能出现的危险,我们⽤⼀个“警告”图标做出警⽰。
C++注释:在本书中有许多⽤来解释Java与C++之间差别的C++注释。对于没有C++程序设计背景,或者不擅长C++程序设计、把它当做⼀场噩梦不愿再想起的程序员来说,可以跳过这些注释。
Java提供了⼀个很⼤的程序设计库,即应⽤程序编程接⼝。第⼀次使⽤API调⽤时,我们会在该节的结尾给出⼀个概要描述。这些描述⼗分通俗易懂,希望能够⽐联机API⽂档提供更多的信息。类、接⼝或⽅法名后⾯的编号是介绍该特性的JDK版本号,如下例所⽰:
应⽤程序编程接⼝1.2
程序(源代码见本书⽹站)以程序清单形式给出,例如:
程序清单1-1 InputTest/InputTest.java
⽰例代码
本书⽹站horstmann/corejava以压缩的形式提供了书中的所有⽰例代码。可以⽤熟悉的解压缩程序或者⽤Java开发包中的jar 实⽤程序解压这个⽂件。有关安装Java开发包和⽰例代码的详细信息请参看第2章。
致 谢
写⼀本书需要投⼊⼤量的精⼒,改写⼀本书也并不像想象的那样轻松,尤其是Java技术⼀直在持续不断地更新。编著⼀本书让很多⼈耗费了很多⼼⾎,在此衷⼼地感谢《Java核⼼技术》编写⼩组的每⼀位成员。
Prentice Hall公司的许多⼈提供了⾮常有价值的帮助,却⽢愿做幕后英雄。在此,我希望每⼀位都能够知道我对他们努⼒的感恩。与以往⼀样,我要真诚地感谢我的编辑,Prentice Hall公司的Greg Doench,从本书的写作到出版他⼀直在给予我们指导,同时感谢那些不知其姓名的为本书做出贡献的幕后⼈⼠。⾮常感谢Julie Nahil在图书制作⽅⾯给予的⽀持,还要感谢Dmitry Kirsanov和Alina Kirsanova完成⼿稿的编辑和排版⼯作。我还要感谢早期版本中我的合作者,Gary Cornell,他已经转向其他的事业。
感谢早期版本的许多读者,他们指出了许多令⼈尴尬的错误并给出了许多具有建设性的修改意见。我还要特别感谢本书优秀的审阅⼩组,他们仔细地审阅我的⼿稿,使本书减少了许多错误。
本书及早期版本的审阅专家包括:Chuck Allison (Utah Valley⼤学)、Lance Andersen (Oracle)、Paul Anderson (Anderson Software Group)、Alec Beaton (IBM)、Cliff Berg、Andrew Binstock (Oracle)、Joshua Bloch、David Brown、Corky Cartwright、Frank Cohen (PushToTest)、Chris Crane (devXsolution)、Dr. Nicholas J. De Lillo (Manhattan学院)、Rak
esh Dhoopar (Oracle)、David Geary (Clarity Training)、Jim Gish (Oracle)、Brian Goetz (Oracle)、Angela Gordon、Dan Gordon (Electric Cloud)、Rob Gordon、John Gray (Hartford⼤学)、Cameron Gregory (olabs)、Marty Hall (coreservlets公司)、Vincent Hardy (Adobe Systems)、Dan Harkey (San Jose州⽴⼤学)、William Higgins (IBM)、Vladimir Ivanovic (PointBase)、Jerry Jackson (CA Technologies)、Tim Kimmet (Walmart)、Chris Laffra、Charlie Lai (Apple)、Angelika Langer、Doug Langston、Hang Lau (McGill⼤学)、Mark Lawrence、Doug Lea (SUNY Oswego)、Gregory Longshore、Bob Lynch (Lynch Associates)、Philip Milne (consultant)、Mark Morrissey (Oregon研究院)、Mahesh Neelakanta (Florida Atlantic⼤学)、Hao Pham、Paul Philion、Blake Ragsdell、Stuart Reges (Arizona⼤学)、Rich Rosen (Interactive Data Corporation)、Peter Sanders (法国尼斯ESSI⼤学)、Dr. Paul Sanghera (San Jose州⽴⼤学Brooks学院)、Paul Sevinc (Teamup AG)、Devang Shah (Sun Microsystems)、Yoshiki Shibata、Bradley A. Smith、Steven Stelting (Oracle)、Christopher Taylor、Luke Taylor (Valtech)、George Thiruvathukal、Kim Topley (StreamingEdge)、Janet Traub、Paul Tyma (consultant)、Peter van der Linden、Christian Ullenboom、Burt Walsh、Dan Xu (Oracle)和John Zavgren (Oracle)。
Cay Horstmann
2015年11⽉于瑞⼠⽐尔
⽬ 录
译者序
前⾔
致谢
第1章 Java程序设计概述 1
1.1 Java程序设计平台 1
1.2 Java“⽩⽪书”的关键术语 2 1.
2.1 简单性 2
1.2.2 ⾯向对象 2
1.2.3 分布式 3
1.2.4 健壮性 3
1.2.5 安全性 3
1.2.6 体系结构中⽴ 4
1.2.7 可移植性 4
1.2.8 解释型 5
1.2.9 ⾼性能 5
1.2.10 多线程 5
1.2.11 动态性 5
1.3 Java applet与Internet 6
1.4 Java发展简史 7
1.5 关于Java的常见误解 9
第2章 Java程序设计环境 12
2.1 安装Java开发⼯具包 12
2.1.1 下载JDK 12
2.1.2 设置JDK 13
2.1.3 安装库源⽂件和⽂档 15
2.2 使⽤命令⾏⼯具 16
2.3 使⽤集成开发环境 18
2.4 运⾏图形化应⽤程序 21
2.5 构建并运⾏applet 23
第3章 Java的基本程序设计结构 28 3.1 ⼀个简单的Java应⽤程序 28 3.2 注释 31
3.3 数据类型 32
3.3.1 整型 32
3.3.2 浮点类型 33
3.3.3 char类型 34
3.3.4 Unicode和char类型 35
3.3.5 boolean类型 35
3.4 变量 36
3.4.1 变量初始化 37
3.4.2 常量 37
3.5 运算符 38
3.5.1 数学函数与常量 39
3.5.2 数值类型之间的转换 40
3.5.3 强制类型转换 41
3.5.4 结合赋值和运算符 42
3.5.5 ⾃增与⾃减运算符 42
3.5.6 关系和boolean运算符 42 3.5.7 位运算符 43
3.5.8 括号与运算符级别 44
3.5.9 枚举类型 45
3.6 字符串 45
3.6.1 ⼦串 45
3.6.2 拼接 46
3.6.3 不可变字符串 46
3.6.4 检测字符串是否相等 47
3.6.5 空串与Null串 48
3.6.6 码点与代码单元 49
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论