乎所有程序设计语言都具有的特性:用if-else实现选择;用far和while实现循环;用breck和continue以及Java的标签式break和contiune(它们被认为是Java中“不见的gogo”)退出循环;以及用swtch实现另一种形式的选择。尽管这些与C和G++中见到的有一定的共通性,但多少存在一些区别。除此以外所有示例都是完整的Java示例,能使大家很快地熟悉Java的外观。(4)第4章:初始化和清除本章开始介绍构建器,它的作用是担保初始化的正确实现。对构建器的定义要涉及函数过载的概念(因为可能同时有几个构建器)。随后要讨论的是清除过程,它并非肯定如想象的那么简单。用完一个对象后,通常可以不必管它,垃圾收集器会自动介入,释放由它占据的内存。这里详细探讨了垃圾收集器以及它的一些特点。在这一章的最后,我们将更贴近地观察初始化过程:自动成员初始化、指定成员初始化、初始化的顺序、static(静态)初始化以及数组初始化等等。(5)第5章:隐藏实现过程本章要探讨将代码封装到一起的方式,以及在库的其他部分隐藏时,为什么仍有一部分处于暴露状态。首先要讨论的是padkcge和inpart关键字,它们的作用是进行文件级的封装(打包)操作,并允许我们构建由类构成的库(类库)。此时也会谈到目录路径和文件名的问题。本章剩下的部分将讨论pudic,pivate以及potected三个关键字、“友好”访问的概念以及各种场合下不同访问控制级的意义。(6)第6章:类再生继承的概念是几乎所有P语言中都占有重要的地位。它是对现有类加以利用,并为其添加新功能的一种有效途径(同时可以修改它,这是第7章的主题)。通过继承来重复使用原有的代码时(再生),一般需要保持“基础类”不变,只是将这儿或那儿的东西串联起来,以达到预期的效果。然而,继承并不是在现有类基础上制造新类的唯一手段。通过“合成”,亦可将一个对象嵌入新类。在这一章中,大家将学习在Java中重复使用代码的这两种方法,以及具体如何运用。(7)第7章:多形性若由你自己来干,可能要花9个月的时间才能发现和理解多形性的问题,这一特性实际是CP一个重要的基础。通过一些小的、简单的例子,读者可知道如何通过继承来创建一系列类型,并通过它们共有的基础类对那个系列中的对象进行操作。通过Java的多形性概念,同一系列中的所有对象都具有了共通性。这意味着我们编写的代码不必再依赖特定的类型信息。这使程序更易扩展,包容力也更强。由此,程序的构建和代码的维护可以变得更方便,付出的代价也会更低。此外,Java还通过“接口”提供了设置再生关系的第三种途径。这儿所谓的“接口”是对对象物理“接口”一种纯粹的抽象。一旦理解了多形性的概念,接口的含义就很容易解释了。本章也向大家介绍了Java1.1的“内部类”。(8)第8章:对象的容纳对一个非常简单的程序来说,它可能只拥有一个固定数量的对象,而且对象的“生存时间”或者“存在时间”是已知的。但是通常,我们的程序会在不定的时间创建新对象,只有在程序运行时才可了解到它们的详情。此外,除非进入运行期,否则无法知道所需对象的数量,甚至无法得知它们确切的类型。为解决这个常见的程序设计问题,我们需要拥有一种能力,可在任何时间、任何地点创建任何数量的对象。本章的宗旨便是探讨在使用对象的同时用来容纳它们的一些Java工具:从简单的数组到复杂的集合(数据结构),如Vectar和Hashtcde等。最后,我们还会深入讨论新型和改进过的Java1.2集合库。(9)第9章:违例差错控制Java最基本的设计宗旨之一便是组织错误的代码不会真的运行起来。编译器会尽可能捕获问题。但某些情况下,除非进入运行期,否则问题是不会被发现的。这些问题要么属于编程错误,要么则是一些自然的出错状况,它们只有在作为程序正常运行的一部分时才会成立。JCV为此提供了“违例控制”机制,用于控制程序运行时产生的一切问题。这一章将解释try、cath、throwthrows以及findIy等关键字在Jaa中的工作原理。并讲述什么时候应当“掷”出违例,以及在捕获到违例后该采取什么操作。此外,大家还会学习JVa的一些标准违例,如何构建自己的违例,违例发生在构建器中怎么办,以及违例控制器如何定位等等,(10)第10章:Java「O系统理论上,我们可将任何程序分割为三部分:输入、处理和输出。这意味着1(输入/输出)是所有程序最为10
ɗԥٓęרҹʟ٠ƒ̋ٓŮԷםًfI F EL SEӔ֬ڍׯ ًF OR ɄWHI L EӔ֬ײɪً BR EAK Ʉ CONT I NUE ؤʖ+AVAŮÒђӚBR EAK ɄCONT I UNEzԧφ¼ҊյӢ+AVAۗfáʻŮ GOGOg{՝Įײɪؤʖً SWI T CH Ӕ֬ΉۜיӚŮڍׯb˨Ȧٟ׆ڬ$Ʉ$ۗʻŪŮٓƇŮȎՊם~ŢƦұŐ׆ڄѲÔbįńؤդ~ ԥٓӛͦƒӢէڶŮ+AVAӛͦ~ϹӘŘʧɌ̷ŶӶ֚+AVAŮդȥb ŷ ڞfĭәɥɄѩį ½ڞ̚ә˞ҲȒ˂ш~ԧŮܜًӢްĭәɥŮڷѽӔ֬bơȒ˂шŮƇدؔҷʖȺӾȵڂŮǬЀzضյ̧ ϹՋӑٓʛȀȒ˂ш{bԟɕؔԵŮӢѩįȵę~ԧ×DŽ̬ƇғֶֽŮϭμʵşbًէȀơֽɕ~Պą ̧ؤáÉȦԧ~͇ʊӪʕшɼ܈ƍ˞Ҕ~Ӥǃُԧڛ̉ŮϸŐbڬֵ֢͡Եͺ͇ʊӪʕшؤʖԧŮ׆Է żbڞڬڄŮܖɕ~ևφ˃ȅՆ˧Ŷȥýĭәɥȵę܈ƍė٭ĭәɥaۉƇė٭ĭәɥaĭәɥŮԇ רaS T AT I Cz˲ԫ{ĭәɥؤʖӾܕĭәɥűűb ŷ ڞfغñӔ֬ȵę ½ڞؔԵ˃śΩǏ۴ŪуŮƽӚ~ؤʖڄ̳ŮпԦåNJغñӑ~յӒμҍٓåNJĴٙ³Β۷ԫbӬ֥ ؔԵŮӢ PACKAGEɄ I MPOR T Ȣʼ܉ԧ~φŮܜًӢ˥ךփʾʙŮǏ۴zŗ{òܜ×~צټևφȒ˂ُ͛ ȒėŮ̳z̳͛{bńӑؗɼԯŪϪΔΓ˶ɄփʾϚŮֆԼb½ڞӈ֣ŮåNJ˃Ե PUBL I C~PR I VAT Eؤʖ PR OT ECTEDқȀȢʼ܉afٔɀgǂֆŮǬЀؤʖȁۜăɆ֣áՋǂֆ̯ۓʙŮدجb Ӄڃ͛fڞ ŷ ʣĜŮǬЀӢʛɗԥٓ 001٠ۗƒڛؔ۞ٓŮŶվbԧӢơ֬ٓ͛ʨؤ×~ًiյпՁʨדȈϹŮٓۜ ׅ˶zՋӑ̧סؤǫԧ~ڬӢŷ ڞŮۧԼ{bՊȵʣĜ͊۞ǢӘً٫ٓŮśΩӑzڃӃ{~¡ף°ؔ Ğfʋı͛gáÎ~ۋӢ˃ڬƭʅϭƭŮƊ֔ķͫу͊~ؤŕŪ٩лŮׅȳbѿƬ~ʣĜ×áӢڄ͛ٓ֬ʋ ۞ۗAVA+ڄ֜װ˃Řʧۗ~ڞڬڄb͛דјҔֽȀơ˃̧ت~ӫƝbՊȵfɆėgŮմ͛דڊۓıҮ ǢӘًśΩŮڬۜʹƽƲ~ؤʖ̋ԽғɅٽًb םיƦڞ ŷ Җُϼ܈ʜ͊Ǯ~̧ϹؔɟȀٹŮӑʰéϹư֬Ʉ͠˙ƦםיŮֆԼ~ڬԷםӔʢӢ 001Ȁ۞ؔŮʋ ıbՊȵ׆ׂŮaʵşŮͦ܇~ƕګ̧ۀūғɅՊȵʣĜ͊Ļ˂֟ͼ͛ט×~ՊȵԧφȎٓŮʋı͛ơ ϭȀ֟ͼۗŮơֽ˥ךòܜbՊȵ +AVAŮƦםיǬЀ~Ջ֟ͼۗŮԥٓơֽƒ̋ٓͺȎՊםbجڬռ܀և φÌŮśΩáÉ؝ڃ͋ԷƇŮ͛וט֘bڬӘęרȅاͅڙ~Ґͩؗȅћbُń~ęרŮȒ˂ɄśΩŮ նɜ̧ؤÎŭȅƽÍ~ǣĮŮśʫؗɼȅŲbńդ~+AVAɬՊȵfː̰gԻȊͺҹڃےӃȢ֟Ůŷқۜ ˶bڬƭԥտŮfː̰gӢơơֽ֏͠fː̰gۜĽŏŮĪֽbš͠˙ͺƦםיŮǬЀ~ː̰Ůȹد̀ ɌҐا˙Ӥͺb½ڞּؗŘʧ˞Ҳͺ+AVA Ůfϸå͛gb ŷ ڞfơֽŮҐϮ ơȀDŽąʵşŮęר͊Ԉ~ԧ̧ϹمۋٓȀȜƇӾͶŮơֽ~ƬѢơֽŮfӃŐӑʰgʅګfŐڄӑ ʰgӢۀأŮbŢӢՊą~ևφŮęרɼڄáƇŮӑʰĻ˂דơֽ~ۋٓڄęךٽרӑȩ́ͺ˙ŪԧφŮֵ ѫbńդ~įDŽ˥Ҕךٽл~Ǖڎ֊ƲۀūԥףơֽŮӾͶ~Ӏې֊ƲŭۀԧφѽѡŮ͛טbյ˙̓ڬȀą ʻŮęרҹʟֆԼ~ևφףؔمٓۜϹͩ~̧ڄ҉Ʌӑʰa҉ɅŶżĻ˂҉ɅӾͶŮơֽb½ڞŮی܋Í ӢԵڄӘًơֽŮՋӑً͊ҐϮԧφŮ׆+ AVAȆ̋ʼnʵşŮӾܕŪǢٿŮʕɆzӾ̉˘Ȓ{~ғ 7ECT OR Ʉ )AS HT ABL Eűbܖɕ~ևφɬɼҽҔԵטדɄǫ˥ȵŮ +AVA ʕɆ̳b ŷ ڞfղͦþŔ̯ۓ +AVAܖʋ½Ůҹʟہی܋ÍӢۂܕŔ֒ŮśΩáɼڭŮךٽу͊bÌسшɼ˨̧ϹßʄֆԼbŢϧ׆ѫ̼ ֣~įDŽ˥Ҕךٽл~ǕڎֆԼӢáɼ¼ư֬Ůb׆ڬֆԼؔμӸٙÌęŔ֒~ؔμڎӢ܈׆ѿŮĮŔ۷ רęۓً̯ٙ~ۓgʌۓ̯oAVAյńԻȊͺfղ+bͧåNJӑéɼėŮךٽąڷרյęܜڄٓۋφ̼~ԧ ךٽӑāӃŮѡֆԼbڞڬ˙˃ӤTRYaCAT CHaT HR OWaT HR OWS ؤʖF I NAL L Y űȢʼڄ܉+ AVAۗŮȆܜ ٫͠b×˅ӺӒμӑɔؽťfۏgĮղͦ~ؤʖڄßʄŪղͦɕǪëѵӒμòܜbńդ~Řʧɬɼװ+ ֜AVA Ů׆Òۼղͦ~ғɅȒ˂܈ʜŮղͦ~ղͦưӃڄȒ˂шۗڏμ§~ؤʖղ̯ͦۓшғɅƇվűűb ŷ ڞ+fAVA * 0֟Վ ͠Ү~ևφ̧˃҉ɅęרNJǼյқåNJӲҔaĴ͠ɄӲĮbجڬռ܀ * 0zӲҔӲĮ{Ӣԥٓęܖרյ
关键的部分。在这一章中,大家将学习Jva为此提供的各种类,如何用它们读写文件、内存块以及控制台等。“老”1O和Java1.1的“新”1O将得到着重强调。除此之外,本节还要探讨如何获取一个对象、对其进行“流式”加工(使其能置入磁盘或通过网络传送)以及重新构建它等等。这些操作在JCVa的1.1版中都可以自动完成。另外,我们也要讨论Java1.1的压缩库,它将用在Java的归档文件格式中(JAR):。(11)第11章:运行期类型鉴定若只有指向基础类的一个句柄,JaVa的运行期类型标鉴定(RTTI)使我们能获知一个对象的准确类型是什么。一般情况下,我们需要有意忽略一个对象的准确类型,让Java的动态绑定机制(多形性)为那一类型实现正确的行为。但在某些场合下,对于只有一个基础句柄的对象,我们仍然特别有必要了解它的准确类型是什么。拥有这个资料后,通常可以更有效地执行一次特殊情况下的操作。本章将解释RTTI的用途、如何使用以及在适当的时候如何放弃它。此外,JaVa1.1的“反射”特性也会在这里得到介绍。(12)第12章:传递和返回对象由于我们在Jva中同对象沟通的唯一途径是“句柄”,所以将对象传递到一个函数里以及从那个函数返回一个对象的概念就显得非常有趣了。本章将解释在函数中进出时,什么才是为了管理对象需要了解的。同时也会讲述String(字串)类的概念,它用一种不同的方式解决了同样的问题。(13)第13章:创建窗口和程序片Java配套提供了“抽象Wndov工具包”(AW)。这实际是一系列类的集合,能以一种可移植的形式解决视窗操纵问题。这些窗口化程序既可以程序片的形式出现,亦可作为独立的应用程序使用。本章将向大家介绍AW以及网上程序片的创建过程。我们也会探讨AW的优缺点以及Java1.1在方面的一些改进。同时,重要的“Java Beans”技术也会在这里得到强调。Java Beans是创建“快速应用开发”(RAD)程序构造工具的重要基础。我们最后介绍的是Java1.2的“Swng”库一一它使Java的U组件得到了显著的改善。(14)第14章:多线程JaVa提供了一套内建的机制,可提供对多个并发子任务的支持,我们称其为“线程”。这线程均在单一的程序内运行。除非机器安装了多个处理器,否则这就是多个子任务的唯一运行方式。尽管还有别的许多重要用途,但在打算创建一个反应灵敏的用户界面时,多线程的运用显得尤为重要。举个例子来说,在采用了多线程技术后,尽管当时还有别的任务在执行,但用户仍然可以毫无阻碍地按下一个按钮,或者键入一些文字。本章将对Java的多线程处理机制进行探讨,并介绍相关的语法。(15)第15章网络编程开始编写网络应用时,就会发现所有Java特性和库仿佛早已串联到了一起。本章将探讨如何通过因特网通信,以及Java用以辅助此类编程的一些类。此外,这里也展示了如何创建一个Java程序片,令其同一个“通用网关接口”(Co)程序通信;揭示了如何用C++编写G程序;也讲述了与Java1.1的“Java数据库连接”(JDBO和“远程方法调用”(RM)有关的问题。(16)第16章设计范式本章将讨论非常重要、但同时也是非传统的“范式”程序设计概念。大家会学习设计进展过程的一个例子。首先是最初的方案,然后经历各种程序逻辑,将方案不断改革为更恰当的设计。通过整个过程的学习,大家可体会到使设计思想逐渐变得清晰起来的一种途径。(17)第17章项目本章包括了一系列项目,它们要么以本书前面讲述的内容为基础,要么对以前各章进行了一番扩展。这些项目显然是书中最复杂的,它们有效演示了新技术和类库的应用。有些主题似乎不太适合放到本书的核心位置,但我发现有必要在教学时讨论它们,这些主题都放入了本书的附录。(18)附录A:使用非Java代码对一个完全能够移植的JaVa程序,它肯定存在一些严重的缺陷:速度太慢,而且不能访问与具体平台有关的服务。若事先知道程序要在什么平台上使用,就可考虑将一些操作变成“固有方法”,从而显著加快执行速11
ȢʼŮåNJbڞڬڄ~ۗŘʧ˃װ+֜AVAյńԻȊŮȁۜ͛~ғɅًԧφƕփʾaϸŐ̶ؤʖ̯ۓԩ űbf͖g* 0Ʉ +AVA Ůfדg* 0˃ŭŪ܀۞ћƃbįńہդ~½˔ɬؔԵғɅʄѵȀơֽaơп ˥ךfΌӚgʨȆzӘпϹےҔŁГʅՊȵթΦĶԕ{ؤʖ۞דȒ˂ԧűűb׆ڬòڄܜ+AVAŮ £ۗƒ ̧܈ؤƍէėbΉդ~ևφؗؔԵ+AVA Ůԡ̳~ԧ˃ًڄ+ AVAŮȭŦփʾǾӚۗz+"3{b Ƈʹט͛лךٽfڞ ŷ Җۋٓۉּʋı͛ŮȀ̍Õ~+AVAŮךٽл͛טÒʹƇz355* {ӘևφϹʄۀȀơֽŮۼѽ͛טӢӒ μb¡ѫ̼֣~ևφףٓؔجɘΟȀơֽŮۼѽ͛ט~҂ +AVAŮƍԫªƇʌۓzƦםי}յϭ͛טӔ ֬ڷѽŮךյbŢڄϧ׆ăɆ֣~ơٙۋٓȀʋı̍ÕŮơֽ~ևφҍѿԷÔٓÉؔͺ˙ԧŮۼѽ͛טӢ ӒμbمٓڬȀ܂ͻɕ~Պą̧ؤȅׅٓŶךۆņԷӱѫ̼֣Ůòܜb½ڞ˙˃Ӥ 355* ŮًaғɅӘً ؤʖڄӣťŮӑɔғɅǃыԧbńդ~+AVA ŮfƸҶgԷםؗɼڬڄ͡ŭŪ˞Ҳb ŷ ڞfĶŹɄƹɸơֽ ُٙևφڄ+ AVAۗՋơֽȐՊŮմ˶Ӣf̍Õg~ԥؤ˃ơֽĶŹŪȀȺӾ͡ؤʖʼnϭȀȺӾƹɸ ȀơֽŮǬЀ֪̀ŭDŽąٓѶͺb½ڞ˙˃ӤڄȺӾۗ˥Įӑ~ӒμéӢյͺȦ͠ơֽףؔͺ˙ŮbՋӑؗ ɼ˅Ӻ 4T R I NGz܉ķ{͛ŮǬЀ~ԧًۜáՋŮƽӚ˙̓ͺՋؑŮֆԼb ŷ ڞfĻ˂ĸ̰ɄęרЧ +AVAМԶԻȊͺfĪֽ 8I NDOWS Ȇ̋gz"85{bڬӔʢӢ֟ͼ͛ŮʕɆ~Ϲؤ̧ۜۅؠŮיӚ˙̓ ӨĸòֆԼb׆ڬĸ̰ɥęרʡ̧ؤęרЧŮיӚĮ֬~ت̧ܜյƔͧŮؽًęרӘًb½ڞּ˃Řʧ˞ Ҳ"85 ؤʖթҮęרЧŮĻ˂ȵębևφؗɼԵ"85 Ůٌѻżؤʖ+AVA ڄ)6* ƽϑŮ׆ǫ˥bՋ ӑ~۞ؔŮf+AVA #EANSgʝӹؗɼڬڄ͡ŭŪћƃb+AVA #EANS ӢĻ˂f̷ԙؽً̚ưgz3"%{ęרȒ ڊȆ̋Ů۞ؔʋıbևφܖɕ˞ҲŮӢ+AVA Ůf4WI NGg̳ccԧӘ+AVA Ů6* ܕʾŭŪͺ֪ۨŮǫ Ҫb ŷ ڞfƦְę +AVAԻȊͺԶϸ˂Ůʌۓ̧~ԻȊơƦȀ×ư܇֑҉ŮڿĞ~ևφĖпյfְęgbڬְę̖ڄşŮę רϸךٽbįDŽʌш۴ͺƦȀĴ͠ш~Ǖڬڎ̀ӢƦȀ܇֑҉ŮմךٽƽӚb˨ȦɬٓÔŮצƦ۞ًؔ ~ŢڄŗԝĻ˂ȀƸؽ·ϘŮًɞ˜ϑӑ~ƦְęŮٽً֪ŭَյ۞ؔb̅Ȁͦ܇͊Ԉ~ڄëًͺƦְ ęʝӹɕ~˨ȦťӑɬٓÔŮ҉֑ךۆڄ~Ţًɞҍѿ̧ؤȿ֊ܔSŶ֣ȀЇ~ʅګʼҔ׆փ܉b ½ڞ˃ơ+AVAŮƦְęĴ͠ʌۓ˥ךԵ~×˞ҲֱȢŮ٠Ʋb ŷ ڞ թΦÌę ̚әÌթΦؽًӑ~̀ɼư֬ԥٓ+AVAԷםɄ̳ǁǔأډķͫŪͺуb½ڞ˃ԵғɅՊȵضԷթՊ ו~ؤʖ+AVAًؤǝ۩ń͛ÌęŮ׆͛bńդ~ڬؗ͡ڙӛͺғɅĻ˂Ȁ +AVAęרЧ~ΊпՋȀ fՊًթȢː̰gz$(* {ęרՊוˏӛͺғɅً$Ì *)$ęר˅ؗӺͺٟ+ AVA Ůf+AVAӾ̉ ̳ͬːgz+%#${ɄfٱęƽƲƃًgz3.* {ٓȢŮֆԼb ŷ ڞ ҹʟƺӚ ½ڞ˃ԵDŽą۞ؔaŢՋӑؗӢDŽĶՎŮfƺӚgęרҹʟǬЀbŘʧɼװ֜ҹʟ˥ڙȵęŮȀͦ܇b Ӭ֥ӢܖĭŮƽ~ѿɕ˭ͤȁۜęרΤʓ~˃ƽáƞǫǽյȅэťŮҹʟbՊȵڶȀȵęŮװ~֜Řʧ ̧ԽɼŪӘҹʟԍֶۦˁÎŭѩ֕у͊Ů˶ۜb ŷ ڞֹ Ϫ ½ڞ̈ͺ֟ͼֹϪ~ԧφؔμؤ1/2ӵєϑ˅ӺŮϸҐյʋı~ؔμơؤєȁڞ˥ךͺƳͅڙb׆ڬֹ Ϫ֪ѿӢӵۗܖǢٿŮ~ԧφׅٓ؈ӛͺדʝӹɄ̳͛Ůؽًb ٓ׆ۧԼԓɗáԪӣɆǃŪ½ӵŮɃהվے~Ţևư֬ٓÉؔڄˌװӑԵԧφ~׆ڬۧԼƒǃҔͺ½ӵŮ ǧΔb ǧΔ"ӘًDŽ+AVAśΩ ơȀէѺϹȔۅؠŮ +AVAęר̬ԧ~ƇŐ׆ڄ۞Ůѻ֮ԙƙԪα~ƬѢáϹǂֆٟ̋ԽЮԩٓȢŮ Ǜ֑bҖӟ֥ۀūęרؔڄӒμЮԩҮӘً~̧̠̀Ι˃׆òܜÎėfȜٓƽƲg~ʼnƬ֪ۨʨ̷ךۆԙ
度。这些“固有方法”实际是一些特殊的函数,以另一种程序设计语言写成(目前仅支持αG+)。Java还可通过另一些途径提供对非Java代码的支持,其中包括CORBA。本附录将详细介绍这些特性,以便大家能创建一些简单的例子,同非Java代码打交道。(19)附录B:对比G++和Java对一个G+程序员,他应该已经掌握了面向对象程序设计的基本概念,而且Java语法对他来说无疑是非常眼熟的。这一点是明显的,因为Java本身就是从G+衍生而来。但是,G+和Java之间的确存在一些显著的差异。这些差异意味着Java在G+基础上作出的重大改进。一旦理解了这些差异,就能理解为什么说Java是一种杰出的语言。这一附录便是为这个目的设立的,它讲述了使Java与C++明显有别的一些重要特性。(20)附录CJava编程规则本附录提供了大量建议,帮助大家进行低级程序设计和代码编写。(21)附录D:性能通过这个附录的学习,大家可发现自己JCva程序中存在的瓶颈,并可有效地改善执行速度。(22)附录E:关于垃圾收集的一些话这个附录讲述了用于实现垃圾收集的操作和方法。(23)附录F:推荐读物列出我感觉特别有用的一系列Java参考书。6.练习为巩固对新知识的掌握,我发现简单的练习特别有用。所以读者在每一章结束时都能找到一系列练习。大多数练习都很简单,在合理的时间内可以完成。如将本书作为教材,可考虑在课堂内完成。老师要注意观察,确定所有学生都已消化了讲授的内容。有些练习要难些,他们是为那些有兴趣深入的读者准备的。大多数练习都可在较短时间内做完,有效地检测和加深您的知识。有些题目比较具有挑战性,但都不会太麻烦。事实上,练习中碰到的问题在实际应用中也会经常碰到。7.多媒体CD-ROM本书配套提供了一片多媒体DROM可单独购买及使用。它与其他计算机书籍的普通配套D不同,那些D通常仅包含了书中用到的源码(本书的源码可从wwwwBruceEdkel.com免费下载)。本DROv是一个独立的产品,包含了一周“Hac-Java”培训课程的全部内容。这是一个由BruceEdke讲授的、长度在15小时以上的课程,含500张以上的演示幻灯片。该课程建立在这本书的基础上,所以是非常理想的一个配套产品。RO包含了本书的两个版本:(1)本书一个可打印的版本,与下载版完全一致。(2)为方便读者在屏幕上阅读和索引,ROV提供了一个独特的超链接版本。这些超链接包括:■230个章、节和小标题链接■3600个索引链接DROV刻录了60OMB以上的数据。我相信它已对所谓“物超所值”进行了薪新的定义。ROV包含了本书打印版的所有东西,另外还有来自五天快速入门课程的全部材料。我相信它建立了一个新的书刊品质评定标准。若想单独购买此ROM只能从Web站点wwwwBruceEdke.com处直接订购。8.源代码本书所有源码都作为保留版权的免费软件提供,可以独立软件包的形式获得,亦可从http://vwwwBruceEdkel.com下载。为保证大家获得的是最新版本,我用这个正式站点发行代码以及本书电子版。亦可在其他站点找到电子书和源码的镜像版(有些站点已在http://wwwwBruceEdkelcom处列出)。但无论如何,都应检查正式站点,确定镜像版确实是最新的版本。可在课堂和其他教育场所发布这些代码。版权的主要目标是保证源码得到正确的引用,并防止在未经许可的情况下,在印刷材料中发布代码。通常,12
ƙb׆ڬfȜٓƽƲgӔʢӢ׆ԷӱŮȺӾ~ؤΉۜęרҹʟ٠ėzϪєˣڿĞ$${b+AVAɬ ̧ՊȵΉ׆˶ԻȊơDŽ+AVAśΩŮڿĞ~пۗ̈́ $03#"b½ǧΔ˃ֵ֢˞Ҳ׆ڬԷם~ؤÍŘʧϹĻ ˂׆ʵşŮͦ܇~ՋDŽ+AVAśΩŗˈūb ǧΔ#ơÁ $Ʉ+AVA ơȀ $ę٭רԦ~ؽǪأ˭ڠֈͺϑּơֽęרҹʟŮʋ½ǬЀ~ƬѢ+AVA٠ƲơԦ͊Ԉ֊ءӢDŽą؆ ӶŮbڬżӢϙ֪Ů~ضյ +AVA½Ҽ̀Ӣʼn $؇ӃƬ͊bŢӢ~$Ʉ+AVAہʰŮѽŐ׆ڄ֪ۨŮþ شb׆ڬþجشռ܀+AVAڄ$ ʋıҮܜĮŮ۞Řǫ˥bš͠˙ͺ׆ڬþش̀~Ϲ͠˙յӒμԈ+AVAӢ ˕ۜĮŮ٠bڬǧΔÍӢյڬȀϪŮҹͧŮ~ԧ˅ӺͺӘ+AVAٟ$ ϙ֪ٓÔŮ׆ؔ۞Էםb ǧΔ$+AVAÌęȬڎ ½ǧΔԻȊͺŘͶ˂ز۩̈~Řʧ˥ךŲʙęרҹʟɄśΩÌb ǧΔ%םϹ ՊȵڬȀǧΔŮװ~֜Řʧ̧ư֬܈ʜ+AVAęרۗŐڄŮЯ˱~×̧ׅٓŶǫҪךۆԙƙb ǧΔ&Ȣ͇ٙʊӪʕŮ׆ɦ ڬȀǧΔ˅ӺͺًٙӔ͇֬ʊӪʕŮòܜɄƽƲb ǧΔ'՜ʸƕ֏ ͼĮևDZ̒ԷÔًٓŮ֟ͼ +AVAî̠ӵb Ŀǖ յȌȜơۀדӕŮڠ~ֈևư֬ʵşŮͱ֜ԷÔًٓbԥؤƕڄګρڞ˘ӼӑƒϹڦŪ֟ͼͱ֜b ŘƦӾͱ֜ƒɌʵş~ڄɆ͠Ůӑʰϸ̧ؤէėbғ˃½ӵܜյˌè~̧̠Ιڄ̫Բϸէėb͖Ӌؔ۬جȥ ý~ѽƇԥٓװӃƒأֿɥͺ˅ӮŮϸҐbٓ׆ͱ֜ؔϳ׆Ԧ~φӢյϭ׆ٓחѶҽҔŮƕۼګ«ŮbŘƦ Ӿͱ֜ƒ̧ڄˍƜӑʰϸܛէ~ׅٓŶʴøɄʨҽЃŮۀӕbٓ׆ԼϪÁˍ̋ٓՃםڜ~ŢƒáɼԪΨƷb ӟӔҮ~ͱ֜ۗПŪŮֆԼڄӔʢؽًؗۗɼ˭ąПŪb ±ŐƸ %#! ½ӵМԶԻȊͺЧƦπԽ$% 30.~̧şƔȓέʖӘًbԧٟпԦʟԝʌӵʔŮкՊМԶ $%áՋ~ϭ׆%$ ՊąˣȹͺӵًۗŪŮٯΩz½ӵŮٯΩ̧ʼnWWW #R UCE&CKEL COMϐLj֣ڂ}b½$% 30.ӢȀƔͧŮ āЭ~ȹͺ۠f)ADS 0N+AVAgЛ̫ęŮѺåϸҐbڬӢȀُ#R UCE &CKEL ˅ӮŮaĆƙڄׂӑ ؤҮŮ̫ę~ȹؤڟҮŮ؈ӛɲůЧbǪ̫ę˂ͧڬڄ1/2ӵŮʋıҮ~ԥؤӢDŽąֶ͠ŮȀМԶā Эb $% 30.ȹͺ½ӵŮʹȀ£½ ½ӵȀ̧ŗػŮ£½~ٟ֣ڂ£էѺۑb յƽÍƕڄګбϩҮٻƕɄԣع %$~30.ԻȊͺȀƔԷŮċͰː£½b׆ڬċͰː̈́ k Ȁڞa˔ɄׂÒԼͰː kȀԣعͰː $% 30.̩Δͺ .# ؤҮŮӾ̉bևֱוԧأơԥտf֏ċԥۇg˥ךͺדژŮƇدb $% 30.ȹͺ½ӵŗػ£ŮԥٓƊ֔~Ήդɬٓ͊܈֍Հ̷ԙҔτ̫ęŮѺåèͻbևֱוu˂ԧͺȀד Ůӵ̛ЭەаƇÒۼb ҖֶşƔȓέń$% 30.~ۋϹʼn8EBڝżWWW #R UCE&CKEL COMĴۄːƈȓb Țŋ ½ӵԥٓٯΩƒܜյ°£ѹŮϐLjҕʾԻȊ~̧ؤƔͧҕʾŮיӚʄŭ~ت̧ʼn HT T P WWW #R UCE&CKEL COM֣ڂbյ°ڼŘʧʄŭŮӢדܖ~1/2£ևًڬȀڷӚڝżưךśΩؤʖ½ӵſ ܇£bت̧ڄпԦڝżڦŪſ܇ӵɄٯΩŮ˵ֻ£zٓڝ׆żڄأHT T P WWW #R UCE&CKEL COMĴͼĮ{b Ţ֊ғɅ~ƒؽʴüڷӚڝż~ѽƇ˵ֻ£ѽӔӢדܖŮ£½b̧ڄ̫ԲɄпԦˌ٦ăԥưâ׆ڬśΩb £ѹŮۧؔϪÒӢ°ٯڼΩŭŪڷѽŮع×~ًƿڄۊջ˭צ̧Ůѫ̼֣~ػڄӿèͻۗưâśΩbՊą~
只要源码获得了正确的引用,则在大多数媒体中使用本书的示例都没有什么问题。在每个源码文件中,都能发现下述版本声明文字Copyright(c)BruceEdkel,1998Source coce file fromthe book"Thi nkingin Javd'Al rights reservedEXCEPT cs dlowedbythe// fdlowngstatenents:You canfreely usethis fileI/faryourownwark(persondarconmerdd),// indudngnodfications andd stributioninexeautdd efarmonly.Pernnssion is ganted to usell this filein d cssroomsituations,indudngitsI/ useinpresentation naterids,cs I ongcs thebookI/ "Thinkingin Javdis dted cs the saurce.1/Except in dcssroomsituati ons,you cannot copyand d stribute this code, instead the sdedstributionpaintishttp//wwBruceEdkel.com//(andoffidd nnrra sites)whereit isI freel y avalad e.You cannot renove thi scopyright and noti ce.You cannot d stri butenodfiedversi ons of thesaurcecodein this/padkage.You cannot usethis fileinprinted// ned a wthout the exp ess pernissi on of theautha.Bruce Edkenakesno represent ati on dbout// the suitdility of this softwaefa any purpose./l It isproviced"cs is""wthout expess ar inpied// waranty of anykind indudng anyinplied/l varranty af ner chant aility, fitness far aparti aulanon-i nf ri ngenent. The entirepurposear// risk as to the qudity andperfarnance of the// softvaeis wthyou.Br uce Edkelandthell pudisher shdl not belicde far any danugesIl suffered by you aranythirdpatycsaresult ofI/ using a d stri buting sof tware. In no event wllBruce Ekel ar the pudisher be liad efar anyl/ lost revenue,profit,adataarfardrect,Ilindrect,spedd,consequentid,iinddentd,arl puni ti ve danages,hovever caus ed and regardess ofthe theary f li cility, aising out of the use afa indbility to use sof twar e, even if Bruce Edkeland the pud isher have been advi sed of the// possibility of suchdanages.Shou dthesoftwaepr ove defedti ve, you cssune the cost of di//necessayservidngrepair,acarrection.If yauIl thi nk yau' ve found an erra, p ecse enail dlI/ nodfied fil es wth dealy conmented changesto//Br uce@dkel Cj edts.com (Pl ecse use the sane// addess fa non-coce errars foundinthebook.)可在自己的开发项目中使用代码,并可在课堂上引用(包括学习材料)。但要确定版权声明在每个源文件中得到了保留。13
ۋؔٯΩʄŭͺڷѽŮع~ًڄڎŘƦӾπԽۗӘً½ӵŮӛͦƒξٓӒμֆԼb ڄρȀٯΩփʾۗ~ƒϹư֣֬Ӻ£½ӂϙփ܉f $OPYR I GHT C #R UCE &CKEL 4OUR CE CODE F I L E F R OM T HE BOOK 5HI NKI NG I N +AVA "L L R I GHT S R ES ER VED &9$&15 AS AL L OWED BY T HE F OL L OWI NG S T AT EMENT S :OU CAN F R EEL Y US E T HI S F I L E F OR YOUR OWN WOR K PER S ONAL OR COMMER CI AL I NCL UDI NG MODI F I CAT I ONS AND DI S T R I BUT I ON I N EXECUT ABL E F OR M ONL Y 1ER MI S S I ON I S GR ANT ED T O US E T HI S F I L E I N CL AS S R OOM S I T UAT I ONS I NCL UDI NG I T S US E I N PR ES ENT AT I ON MAT ER I AL S AS L ONG AS T HE BOOK 5HI NKI NG I N +AVA I S CI T ED AS T HE S OUR CE &XCEPT I N CL AS S R OOM S I T UAT I ONS YOU CANNOT COPY AND DI S T R I BUT E T HI S CODE I NS T EAD T HE S OL E DI S T R I BUT I ON POI NT I S HT T P WWW #R UCE&CKEL COM AND OF F I CI AL MI R R OR S I T ES WHER E I T I S F R EEL Y AVAI L ABL E :OU CANNOT R EMOVE T HI S COPYR I GHT AND NOT I CE :OU CANNOT DI S T R I BUT E MODI F I ED VER S I ONS OF T HE S OUR CE CODE I N T HI S PACKAGE :OU CANNOT US E T HI S F I L E I N PR I NT ED MEDI A WI T HOUT T HE EXPR ES S PER MI S S I ON OF T HE AUT HOR #R UCE &CKEL MAKES NO R EPR ES ENT AT I ON ABOUT T HE S UI T ABI L I T Y OF T HI S S OF T WAR E F OR ANY PUR POS E * T I S PR OVI DED AS I S WI T HOUT EXPR ES S OR I MPL I ED WAR R ANT Y OF ANY KI ND I NCL UDI NG ANY I MPL I ED WAR R ANT Y OF MER CHANT ABI L I T Y F I T NES S F OR A PAR T I CUL AR PUR POS E OR NONI NF R I NGEMENT 5HE ENT I R E R I S K AS T O T HE QUAL I T Y AND PER F OR MANCE OF T HE S OF T WAR E I S WI T H YOU #R UCE &CKEL AND T HE PUBL I S HER S HAL L NOT BE L I ABL E F OR ANY DAMAGES S UF F ER ED BY YOU OR ANY T HI R D PAR T Y AS A R ES UL T OF US I NG OR DI S T R I BUT I NG S OF T WAR E * N NO EVENT WI L L #R UCE &CKEL OR T HE PUBL I S HER BE L I ABL E F OR ANY L OS T R EVENUE PR OF I T OR DAT A OR F OR DI R ECT I NDI R ECT SPECI AL CONS EQUENT I AL I NCI DENT AL OR PUNI T I VE DAMAGES HOWEVER CAUS ED AND R EGAR DL ES S OF T HE T HEOR Y OF L I ABI L I T Y AR I S I NG OUT OF T HE US E OF OR I NABI L I T Y T O US E S OF T WAR E EVEN I F #R UCE &CKEL AND T HE PUBL I S HER HAVE BEEN ADVI S ED OF T HE POS S I BI L I T Y OF S UCH DAMAGES 4HOUL D T HE S OF T WAR E PR OVE DEF ECT I VE YOU AS S UME T HE COS T OF AL L NECES SAR Y S ER VI CI NG R EPAI R OR COR R ECT I ON * F YOU T HI NK YOU VE F OUND AN ER R OR PL EAS E EMAI L AL L MODI F I ED F I L ES WI T H CL EAR L Y COMMENT ED CHANGES T O #R UCE!&CKEL 0BJ ECT S COM 1L EAS E US E T HE S AME ADDR ES S F OR NON CODE ER R OR S F OUND I N T HE BOOK ̧܈ڄʜŮ̚ưֹϪۗӘًśΩ~×̧ڄ̫ԲҮعًz̈́װ֜èͻ{bŢؔѽƇ£ѹӂϙڄρȀٯփʾۗ ŭŪͺ°b
9.编码样式在本书正文中,标识符(函数、变量和类名)以粗体印刷。大多数关键字也采用粗体一除了一些频繁用到的关键字(若全部采用粗体,会使页面拥挤难看,比如那些“类”)。对于本书的示例,我采用了一种特定的编码样式。该样式得到了大多数Java开发环境的支持。该样式问世已有几年的时间,最早起源于Bj arneStroustrup先生在TheC++ProganminngLanguage》里采用的样式(Addson-Wesley1991年出版,第2版)。由于代码样式目前是个敏感问题,极易招致数小时的激烈辩论,所以我在这儿只想指出自己并不打算通过这些示例建立一种样式标准。之所以采用这些样式,完全出于我自己的考虑。由于Java是一种形式非常自由的编程语言,所以读者完全可以根据自己的感觉选用了适合的编码样式。本书的程序是由字处理程序包括在正文中的,它们直接取自编译好的文件。所以,本书印刷的代码文件应能正常工作,不会造成编译器错误。会造成编译错误的代码已经用注释//!标出。所以很容易发现,也很容易用自动方式进行测试。读者发现并向作者报告的错误首先会在发行的源码中改正,然后在本书的更新版中校订(所有更新都会在Web站点http//wwwBruceEdkel,com处出现)。10.Java版本尽管我用几家厂商的Java开发平台对本书的代码进行了测试,但在判断代码行为是否正确时,却通常以Sun公司的Java开发平台为准。当您读到本书时,Sun应已发行了Java的三个重要版本:1.0,1.1及1.2(Sun声称每9个月就会发布一个主要更新版本)。就我看,1.1版对JCva语言进行了显著改进,完全应标记成2.0版(由于1.1已作出了如此大的修改,真不敢想象2.0版会出现什么变化)。然而,它的1.2版看起来最终将Java推入了一个全盛时期,特别是其中考虑到了用户界面工具。本书主要讨论了1.0和1.1版,1.2版有部分内容涉及。但在有些时候,新方法明显优于老方法。此时,我会明显偏向于新方法,通常教给大家更好的方法,而完全忽略老方法。然而,有的新方法要以老方法为基础,所以不可避免地要从老方法入手。这一特点尤以AW为甚,因为那儿不仅存在数量众多的老式Java1.0代码,有的平台仍然只支持Java1.0。我会尽量指出哪些特性是哪个版本特有的。大家会注意到我并未使用子版本号,比如1.1.1。至本书完稿为止,Sun公司发布的最后一个1.0版是1.02;而1.1的最后版本是1.1.5(Java1.2仍在做β测试)。在这本书中,我只会提到Java1.0,Java1.1及Java1.2,避免由于子版本编号过多造成的键入和印刷错误。11.课程和培训我的公司提供了一个五日制的公共培训课程,以本书的内容为基础。每章的内容都代表着一堂课,并附有相应的课后练习,以便巩固学到的知识。一些辅助用的幻灯片可在本书的配套光盘上找到,最大限度地方便各位读者。欲了解更多的情况,请访问:http:/ /wwwwBruceEdkel.com或发函至:Bruce@EdkeCjedts.com我的公司也提供了咨询服务,指导客户完成整个开发过程一特别是您的单位首次接触Jva开发的时候。12.错误无论作者花多大精力来避免,错误总是从意想不到的地方冒出来。如果您认为自己发现了一个错误,请在源文件(可在http://wwwwBruceEdkel.com处找到)里指出有可能是错误的地方:填好我们提供的表单。将您推荐的纠错方法通过电子函件发给Bruce@EdkeCjects.com经适当的核对与处理,Web站点的电子版以及本书的下一个印刷版本会作出相应的改正。具体格式如下(1)在主题行(Subject)写上“TI」Carredtion”(去掉引号),以便您的函件进入对应的目录。(2)在函件正文,采用下述形式find在这里写一个单行字串,以便我们搜索错误所在的地方Conment:在这里可写多行批注正文,最好以“here's howlthink it shoudread”开头###其中,“###指出批注正文的结束。这样一来,我自己设计的一个纠错工具就能对原始正文来一次“搜索”,而您建议的纠错方法会在随后的一个窗口中弹出。14
dŋǾƕ ڄ1/2ӵڷփۗ~ÒӕǘzȺӾaÎͶɄ͛Ϛ{ؤŌԽػӿbŘƦӾȢʼ܉ؗëًŌԽccįͺ׆ЫƵًŪ ŮȢʼ܉zҖѺåëًŌԽ~ɼӘؘϑمʚϳ̞~Áғϭ׆f͛g{b ơٙ½ӵŮӛͦ~ևëًͺۜԷƇŮÌΩؑӚbǪؑӚŭŪͺŘƦӾ+AVA̚ưɪ˳ŮڿĞbǪؑӚֆӝأ ٓʛϿŮӑʰ~ډܖуٯ#ٙJ AR NE 4T R OUS T R UP֥Ӄڄh5HE $ 1R OGR AMMI NG -ANGUAGEi͡ëًŮؑӚ z"DDI S ON 8ES L EY ϿĮ£~ŷ £{bُٙśΩؑӚϪєӢȀϘDZֆԼ~ʑۑڤاӾׂӑŮʏ;Ð ~ԥؤևڬڄƭۋֶۉĮ܈ʜ×áŗԝՊȵ׆ڬӛͦ˂ͧؑۜӚÒۼbہԥؤëً׆ڬؑӚ~էѺĮٙ և܈ʜŮ̠Ιbُٙ+AVAӢۜיӚDŽą܈ُŮÌę٠~ԥؤƕګէѺ̧ؤȃ̉܈ʜŮDZ̒ׯًͺӣɆŮ ÌΩؑӚb ½ӵŮęרӢُ܉Ĵ͠ęר̈ڷڄփۗŮ~ԧφۄːѵ܈ÌسɀŮփʾbԥؤ1/2~ӵػӿŮśΩփʾؽϹ ڷąȆܜ~áɼڊėÌسшŔ֒bɼڊėÌسŔ֒ŮśΩأً۬˭ӤÒĮbԥؤɌҐاư֬~ؗɌҐاً ܈ƍƽӚ˥ךøөbƕګư֬×ּګܜ²ǹŮŔ֒Ӭ֥ɼڄưךŮٯΩۗǫڷ~ѿɕڄ1/2ӵŮȅדۗ£׃ƈ zԥٓȅדƒɼڄ 8EBڝżHT T P WWW #R UCE&CKEL COMĴĮ֬{b /D/ Z_ ˨ȦևًʛʧĈҭŮ+AVA̚ưЮԩơ½ӵŮśΩ˥ךͺøө~ŢڄЕƞśΩךյӢǕڷѽӑ~ѼՊąؤ4UN ȋԏŮ +AVA̚ưЮԩյۼb ťЃƕŪ½ӵӑ~4UNأؽưךͺ +AVAŮқȀ۞ؔ£½ ~ ʖ z4UNӂĖρ Ȁٹ̀ɼưâȀ ۧؔȅד}1/2£b̀և̞~ £ơ+AVA٠˥ךͺ֪ۨǫ˥~էѺؽÒʠė £zُٙ ܜأĮͺғ ńŘŮסǫ~ڭáDzֶֽ £ɼĮ֬ӒμÎɥ{bѿƬ~ԧŮ £̞у͊ܖ+ ˃ۛAVA՜ҔͺȀѺӇӑ л~ԷÔӢп̠ۗΙŪͺًɞ˜ϑȆ̋b ½ӵۧؔԵͺ Ʉ £~ £ٓåNJϸҐҷʖbŢڄٓ׆ӑɔ~דƽƲϙٌ֪͖ٙƽƲbńӑ~և ɼϙ֪ЦּٙדƽƲ~ՊąˌȂŘʧȅɀŮƽƲ~ƬէѺɘΟ͖ƽƲbѿƬ~ٓŮדƽƲؔؤ͖ƽƲյʋ ı~ԥؤá̧ÊϐŶؔʼn͖ƽƲҔӫbڬԷżَؤ"85 յӀ~ضյϭƭáˣŐڄӾͶ۟ƦŮ͖Ӛ +AVA śΩ~ٓŮЮԩҍѿڿۋĞ+AVA bևɼ˨ͶۉĮϬ׆ԷםӢϬȀ£½ԷٓŮb Řʧɼ۬جŪև×ջӘً܇1/2£ɂ~Áғ bې1/2ӵէǸյۊ~4UNȋԏưâŮܖɕȀ £Ӣ Ƭ Ůܖɕ£½Ӣ z+AVA ҍܛڄ `øө{bڬڄ1/2ӵۗ~ևۋɼԻŪ +AVA ~+AVA ʖ +AVA ~Êϐُٙ܇1/2£ÌɂȵƦڊėŮʼҔɄػӿŔ֒b ĦáŤǸ ևŮȋԏԻȊͺȀ֍ҎۓŮȋȎЛ̫ę~ؤ1/2ӵŮϸҐյʋıbρڞŮϸҐƒśÓ܀Բ̫~×ǧֱٓ ؽŮ̫ɕͱ֜~ؤÍȌȜװŪŮۀӕb׆ǝ۩ًŮɲůЧ̧ڄ1/2ӵŮМԶȪГҮڦŪ~ܖŘ֯ƙŶƽÍȁ վƕګb٥ͺ˙ȅƦŮѫ̼~Ѭǂֆ HT T P WWW #R UCE&CKEL COM fېʅưȺ #R UCE!&CKEL 0BJ ECT S COM ևŮȋԏؗԻȊͺ׳܁Ǜ֑~ۉũ̪ɞէėڶȀ̚ưȵęccԷÔӢЃŮşվӬņːij+AVA̚ưŮӑɔb Ǔ ֊ګܜɟƦŘˬͩ͊Êϐ~Ŕ֒܍ӢʼnجֶáŪŮŶƽιĮ͊bғȳЃҊյ܈ʜư֬ͺȀŔ֒~Ѭٯڄ փʾz̧ڄ HT T P WWW #R UCE&CKEL COMĴڦŪ{͡ۉĮ̧ٓϹӢŔ֒ŮŶƽ~ՂɀևφԻȊŮÓşb˃Ѓ ՜ʸŮ˼ŔƽƲՊȵſ܇ȺʾưȂ #R UCE!&CKEL 0BJ ECT S COMb˭ӣťŮɃơٟĴ͠~8EBڝżŮſ܇£ؤʖ ½ӵŮ֣Ȁػӿ£½ɼܜĮֱؽŮǫڷb̋ԽǾӚғ֣ ڄۧԼךz4UBJ ECT{Үf5* + $OR R ECT I ONgzѷƁعɂ{~ؤÍЃŮȺʾ˥ҔơؽŮϪΔb ڄȺʾڷփ~ëً֣ӺיӚ F I ND ڬڄ͡Ȁş܉ךķ~ؤÍևφԖԣŔ֒ԥڄŮŶƽ $OMMENT ڬڄ̧͡ƦךР۬ڷփ~ܖɀؤfHER E S HOW * T HI NK I T S HOUD R EADg̚Ւ пۗ~fgۉĮР۬ڷփ٢Ӽbڬؑ~͊և܈ʜҹʟŮȀ˼ŔȆ̋̀Ϲơ٫әڷփ͊ņfԖ ԣg~ƬЃ˂زŮ˼ŔƽƲɼڄԟɕŮȀĸ̰ۗŤĮb