成功加入购物车
[美] 埃克尔 著; 侯捷 译 / 机械工业出版社 / 2002-09 / 平装
售价 ¥ 40.00 4.0折
定价 ¥99.00
品相 八五品
优惠 满包邮
延迟发货说明
上书时间2019-04-27
卖家超过10天未登录
Java编程思想(第2版)
本书的内容组织、讲授方法、选用示例和附带练习都别具特色。作者根据多年教学实践中发现的问题,通过简练的示例和叙述,阐明了在学习Java中特别容易混淆的诸多概念。与前一版相比,本书不但新增了Java2的语言特性,还根据语言的演变作出了彻底的更新,其中最主要的改变是第9章的群集。本书被多家权威机构评为最佳Java书籍,适合作为各个层次的Java程序员阅读,也可以作为高等院校面向对象程序设计语言及Java语言的教材。
BruceEckel《ThinkinginC++》(C++编程思想)作者,该书曾获1995年SoftwareDevelopmentJoltAward最佳书籍大奖。Eckel有20年专业编程经验,并自1986年起教育人们如何撰写面向对象程序,足迹遍及全球,成为一位知名的C++教师和顾问,如今兼涉Java。他是C++标准委员会拥有表决权的成员之一,曾经写过另五本面向对象编程书籍,发表过150篇以上的文章,是多本计算机杂志的专栏作家。Eckel开创SoftwareDevelopmentConference的C++、Java、Python等多项研讨活动。拥有应用物理学学士和计算机工程学硕士学位。侯捷《深入浅出MFC》作者,该书曾获2001中国优秀科技畅销书奖及多家网站读者选择最受欢迎书奖。侯捷有14年专业编程经验,曾任台湾工研院机械所和电通所特约研究员。1991年进入教育领域,范围涵盖Windows系统与编程、C++/Java面向对象技术、泛型技术,讲课足迹遍及全台湾。
出版者的话III专家指导委员会V读者回应VI关于《ThinkinginC++》VIII题献XIV译序XVJava环境设定XIX综览XXI序言1第2版序3Java24书附光盘5简介6阅读门槛6学习Java6目标7在线说明文档(Onlinedocumentation)8章节组织8习题13多媒体光盘(MultimediaCDROM)13源代码(Sourcecode)14编码标准(Codingstandards)15Java版本15培训课程与顾问指导16关于错误16封面故事16致谢17Internet上的贡献者19第1章对象导论20抽象化的过程20每个对象都有接口22被隐藏的实现细节24重复运用实现码25继承:重复运用接口26是一个(is-a)vs.像是一个(is-like-a)29随多态而生的可互换对象30抽象基类与接口33对象的形貌与寿命33群集和迭代器34单根继承体系36群集类库及其易用性支持37管家面临的两难:谁该负责清理?38异常处理:面对错误的发生39多线程39持久性40Java与Internet(网际网、互联网)41Web是什么?41客户端程序开发42服务端程序开发47另一个截然不同的战场:应用系统48分析与设计48阶段0:策划50阶段1:建立什么?51阶段2:如何建立?53阶段3:打造核心56阶段4:usecases的迭代57阶段5:演化58取得成功59Extremeprogramming(XP)59测试优先60搭档设计61Java为什么成功62易于表达、易于理解的系统62通过程序库(libraries)发挥最大杠杆效应62错误处理62大型程序设计62过渡策略63实践准则63管理上的障碍64Javavs.C++?66摘要67第2章万事万物皆对象69Reference是操控对象之钥匙69所有对象都必须由你建立70存储在哪里70特例:基本型别(primitivetypes)71Java中的数组(array)73你再也不需要摧毁对象73生存空间(Scoping)74对象的生存空间74建立新的数据型别:class75数据成员(fields)和函数(methods)76函数(methods),引数(arguments),返回值(returnvalues)77引数列(Theargumentlist)78打造一个Java程序79名称的可视性(Namevisibility)79使用其他组件(Component)80关键字static81初试啼声:你的第一个Java程序82编译与执行(Compilingandrunning)84注解及内嵌式文档85寓文档于注解85语法86内嵌的HTML86@see:参考其他classes87Class(类)文档所用的标签87Variable(变量)文档所用的标签88Method(函数)文档所用的标签88文档制作示例89编码风格(Codingstyle)90摘要90练习90第3章控制程序流程92使用Java运算符(operators)92优先序(Precedence)92赋值、指派(Assignment)93数学运算符(Mathematicaloperators)95递增(increment)和递减(decrement)97关系运算符(Relationaloperators)98逻辑运算符(Logicaloperators)99位运算符(Bitwiseoperators)102位移运算符(Shiftoperators)102if-else三元运算符(Ternaryif-elseoperator)106逗号运算符(commaoperator)107应用于String身上的operator+107使用运算符时的常犯错误107转型运算符(Castingoperators)108Java没有“sizeof”运算符110再探优先序(Precedence)111运算符综合说明111流程控制120true和false120if-else120return121迭代(iteration)121do-while122for122break和continue124switch129摘要133练习133第4章初始化和清理134以构造函数(constructor)确保初始化的进行134函数重载(methodoverloading)136区分重载函数138搭配基本型别(Primitives)进行重载138以返回值(returnvalue)作为重载的基准142Default构造函数142关键字this143清理(Cleanup):终结(finalization)与垃圾回收(garbagecollection)146finalize()存在是为了什么?147你必须执行清理(cleanup)动作147死亡条件(Thedeathcondition)150垃圾回收器(garbagecollector)的运作方式152成员初始化(Memberinitialization)154指定初值156以构造函数(Constructor)进行初始化动作157Array的初始化163多维(Multidimensional)arrays167摘要169练习170第5章隐藏实现细目172package:程序库单元(Libraryunit)172独一无二的package命名174自订一个程序库177利用imports来改变行为178使用package时的一些忠告180Java访问权限饰词(accessspecifiers)180“Friendly”(友善的)180public:接口访问(interfaceaccess)181private:不要碰我!183protected:几分友善184Interface(接口)与implementation(实现)185Class的访问权限186摘要189练习190第6章重复运用Classes192组合(Composition)语法192继承(Inheritance)语法195baseclass的初始化197兼容组合(composition)及继承(inheritance)199保证适当清理200名称遮蔽(Namehiding)203组合与继承之间的抉择204protected(受保护的)205渐进式开发(Incrementalderelopment)206向上转型(Upcasting)207为什么需要向上转型(Why“upcasting”)?207关键字final208Finaldata209Finalmethods212Finalclasses214最后的告诫215初始化以及class的装载215继承与初始化216摘要217练习218第7章多态220再探向上转型(Upcasting)220将对象的型别忘掉221窍门223Method-call(函数调用)绑定方式223产生正确的行为224扩充性(Extensibility)226覆写(overriding)vs.重载(overloading)229Abstractclasses(抽象类)和abstractmethods(抽象函数)230构造函数(Constructors)和多态(polymorphism)234构造函数调用顺序(orderofconstructorcalls)234继承与finalize()236polymorphicmethods在构造函数中的行为239将继承(inheritance)运用于设计241纯粹继承(Pureinheritance)vs.扩充(extension)242向下转型(downcasting)与执行期型别辨识(run-timetypeidentification)243摘要245练习246第8章接口与内隐类248Interfaces(接口)248Java的多重继承(multipleinheritanceinJava)251通过继承来扩充interface254产生常量群(groupingconstants)255将interfaces内的数据成员初始化256嵌套的(nesting)interfaces257Innerclasses(内隐类)260Innerclasses(内隐类)与upcasting(向上转型)261位于methods和scopes之内的innerclasses(内隐类)263匿名的(anonymous)innerclasses265与外围(outer)class的连接关系268staticinnerclasses(静态内隐类)270取用(referring)outerclass的对象272从多层嵌套class向外伸展触角273继承innerclasses273innerclasses可被覆写(overridden)吗?274Innerclass的标识符(identifiers)276为什么需要innerclasses?277Innerclasses和controlframeworks281摘要287练习287第9章持有你的对象291Arrays(数组)291Arrays是第一级对象(first-classobjects)292返回一个array295Arraysclass297array的充填(filling)306array的复制307arrays的比较308array元素的比较309array的排序312在已排序的array中进行查找313array总结315容器(containers)简介315容器的打印316容器的充填317容器的缺点:元素型别未定323有时候它总是可以运作325制作一个具有型别意识(type-conscious)的ArrayList326迭代器(Iterators)327容器分类学(Containertaxonomy)330Collection的机能333List的机能335根据LinkedList制作一个stack338根据LinkedList制作一个queue339Set的机能340SortedSet342Map的机能343SortedMap346Hashing和hashcodes347覆写hashCode()354持有references356WeakHashMap358再论Iterators(迭代器)360选择一份适当的实现品361在各种Lists之间抉择361在各种Sets之间抉择364在各种Maps之间抉择366Lists的排序和查找368公用函数(Utilities)369让Collection或Map无法被更改369Collection或Map的同步控制370未获支持的操作(Unsupportedoperations)371Java1.0/1.1的容器373Vector和Enumeration374Hashtable375Stack375BitSet376摘要377练习378第10章通过异常处理错误382基本异常383异常引数(Exceptionarguments)383异常的捕捉(Catching)384tryblock384异常处理函数(Exceptionhandlers)385编写你自己的异常类386异常规格(exceptionspecification)389捕捉所有异常390重掷(Rethrowing)异常392Java标准异常395RuntimeException的特殊情况395以finally进行清理(cleanup)397为什么需要finally?398缺憾:异常遗失(theloseexception)400异常的局限性(Exceptionrestrictions)401构造函数(Constructor)404异常的比对(matching)407异常的使用原则(Exceptionguidelines)408摘要409练习409第11章JavaI/O系统412Fileclass412目录列示器(adirectorylister)412目录的检查和建立416输入(Input)和输出(Output)418InputStream的类型418OutputStream的类型419附加属性(attributes)和有用接口420通过FilterInputStream自InputStream读取数据421通过FilterOutputStream将数据写入OutputStream421Readers和Writers422数据的来源(sources)和去处(sinks)423改变stream的行为424未曾有任何变化的classes425RandomAccessFile425I/Ostreams的典型运用426Inputstreams428Outputstreams430这是个臭虫吗?431管线化的(piped)streams432标准I/O432读取标准输入432将System.out转换为PrintWriter433标准I/O重导向(Redirecting)434压缩435运用GZIP进行单纯压缩435运用Zip存储多份文件数据436JavaARchives(JARs)438对象次第读写(Objectserialization)440找出class444控制次第读写(serialization)445使用对象持久机制(persistence)453被语汇单元化(Tokenizing)的输入动作459StreamTokenizer459StringTokenizer462检验大小写464摘要471练习472第12章执行期型别辨识474为什么需要RTTI474Class对象476转型之前先检查478RTTI语法485Reflection(映像):执行期的类信息(run-timeclassinformation)487实现一个函数提取器(extractor)489摘要493练习494第13章制作窗口和applet496基本的applet498applet的束缚(restrictions)498applet的优点498应用程序框架(Applicationframeworks)499在Web浏览器上执行applets500运用Appletviewer501测试applets502从命令行(Commandline)执行applets503一个显示框架(Adisplayframework)504运用WindowsExplorer507制作一个按钮507捕捉一个事件(Capturinganevent)508文本区(Textareas)511控制版面布局(Controllinglayout)512BorderLayout513FlowLayout514GridLayout514GridBagLayout515绝对定位515BoxLayout515最好的方法是什么?519Swing的事件模型(eventmodel)519事件(event)及监听器(listener)的种类520追踪多种事件525Swing组件一览528按钮(Buttons)528图示(Icons)531工具提示(Tooltips)533文本块(Textfields)533边框(Borders)535JScrollPanes536迷你文本编辑器(mini-editor)538复选框(Checkboxes)539单选按钮(Radiobuttons)540组合框Comboboxes(下拉式列表drop-downlists)541列表框(Listboxes)542页签式嵌板(Tabbedpanes)544消息框(Messageboxes)545菜单(Menus)547弹出式菜单(Pop-upmenus)552绘图(Drawing)553对话框(DialogBoxes)556文件对话框(Filedialogs)560Swing组件上的HTML562滑块(Sliders)和进度指示器(progressbars)562树状组件(Trees)563表格(Tables)566选择外观风格(SelectingLook&Feel)567剪贴板(clipboard)569将applet封装于JAR文件572编程技术572动态绑定事件(Bindingeventsdynamically)573将businesslogic和用户界面logic隔离574标准型式577视觉化程序设计(Visualprogramming)与Beans577什么是Bean?578运用Introspector提取出BeanInfo580一个更为复杂精巧的Bean585Bean的包装(PackagingaBean)588Bean所支持的更复杂功能590其他590摘要591练习591第14章多线程594反应灵敏的用户界面594继承自Thread596运用线程打造出反应灵敏的用户界面598结合线程和程序主类600产生多个线程602Daemon线程604共享有限资源606不当的资源访问606Java如何共享资源610再探JavaBeans614停滞(阻塞,Blocking)618转为停滞状态(Becomingblocked)619死锁(Deadlock)628优先权(Priorities)632优先权的读取和设定632线程群组(Threadgroups)636再探Runnable642过多的线程645摘要647练习649第15章分布式计算651网络编程652机器的识别652Sockets(插座)655服务多个客户660数据元(Datagrams)665在applet中使用URL665更多的网络相关信息667JDBC,Java数据库连接机制668让本节示例正常运作670一个GUI版的查询程序673为什么JDBCAPI看起来如此复杂676一个更复杂的示例676Servlets683Servlet基本教练684Servlets和多线程(multithreading)687以servlets处理sessions688执行servlet示例程序691JavaServerPages(JSP)692隐式对象(Implicitobjects)693JSP指令(directives)693JSP的脚本描述成分(scriptingelements)694取出字段(fields)和数值(values)696JSP的页面属性(pageattributes)和有效范围(scope)697处理JSP中的sessions698产生并修改cookies699JSP摘要700RMI(RemoteMethodInvocation,远端函数调用)701远端接口(Remoteinterfaces)701实现出远端接口(remoteinterface)702产生stubs和skeletons704使用远端对象(remoteobject)705CORBA706CORBA的基本原理706一个示例708JavaApplets和CORBA712CORBAvs.RMI712Enterprise(企业级)JavaBeans713JavaBeansvs.EJBs714EJB规格714EJB组件714EJB组件成分715EJB的各项操作716EJBs的类型717分发(Developing)EJB718EJB摘要722Jini:分布式服务(distributedserrices)722Jini的来龙去脉722什么是Jini?723Jini如何运作723discovery动作724join动作724lookup动作725接口和实现的分离725将分布式系统抽象化726摘要726练习727附录A对象的传递和返回729reference的传递729别名(Aliasing)730制作一个局域性副本(localcopies)731Passbyvalue(传值)732对象的克隆(Cloningobjects)733赋予class克隆能力(cloneability)734成功的克隆736Object.clone()的效应738克隆一个组合对象(composedobject)739对ArrayList进行深层拷贝741通过serialization进行深层拷贝743将克隆能力加到继承体系的更下层745为什么要有这种奇怪的设计?746克隆能力(cloneability)的控制746copy构造函数750唯读类(Read-onlyclasses)754编写一个唯读类(read-onlyclasses)755恒常性(immutability)的缺点756恒常不变的Strings758String和StringBuffer760Strings是特殊的东西763摘要763练习764附录BJava原生接口765原生函数(Nativemethod)的调用765头文件产生器:javah766名称重整(Namemangling)与函数标记(functionsignatures)767实现出你自己的DLL767取用JNI函数:通过JNIEnv引数768访问JavaStrings769传递和运用Java对象769JNI和Java异常771JNI和多线程(threading)772使用既有的程序代码772补充信息773附录CJava编程准则774设计774实现(Implementation)778附录D资源783软件783书籍783分析&设计784Python786我的著作786索引788
展开全部
图2
图3
配送说明
...
相似商品
为你推荐
开播时间:09月02日 10:30