Java从入门到精通(第2版)
上QQ阅读APP看书,第一时间看更新

前言

“从入门到精通”系列是专为初学者量身打造的一套编程学习用书,由知名计算机图书策划机构“龙马高新教育”精心策划而成。

本书主要面向Java 初学者和爱好者,旨在帮助读者掌握Java基础知识、了解开发技巧并积累一定的项目实战经验。当读者系统地学习完本书内容之后,就可以骄傲地宣布—“我是一名真正的Java程序员了!”。

为什么要写这样一本书

荀子曰:不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之。

实践对于学习的重要性由此可见一斑。纵观当前编程图书市场,理论知识与实践经验的脱节,是很多Java 图书的写照。为了杜绝这一现象,本书立足于实战,从项目开发的实际需求入手,将理论知识与实际应用相结合。目标就是让初学者能够快速成长为初级程序员,并拥有一定的项目开发经验,从而在职场中拥有一个高起点。

Java的最佳学习路线

本书总结了作者多年的教学实践经验,为读者设计了最佳的学习路线。

本书特色

► 零基础、入门级的讲解

无论读者是否从事计算机相关行业,是否接触过Java,是否使用Java开发过项目,都能从本书中找到最佳起点。

► 超多、实用、专业的范例和项目

本书结合实际工作中的范例,逐一讲解Java的各种知识和技术。最后,还以实际开发项目来总结本书所学内容,帮助读者在实战中掌握知识,轻松拥有项目经验。

► 随时检测自己的学习成果

每章首页罗列了“本章要点”,以便读者明确学习方向。每章最后的“实战练习”则根据所在章的知识点精心设计而成,读者可以随时自我检测,巩固所学知识。

► 细致入微、贴心提示

本书在讲解过程中使用了“提示”、“注意”、 “技巧”等小栏目,帮助读者在学习过程中更清楚地理解基本概念、掌握相关操作,并轻松获取实战技巧。

超值光盘

► 45小时全程同步教学录像

涵盖本书所有知识点,详细讲解每个范例及项目的开发过程及关键点。帮助读者更轻松地掌握书中所有的Java程序设计知识。

► 超多王牌资源大放送

赠送大量超值资源,包括48小时Java项目实战教学录像 、 14小时Oracle项目实战教学录像、857页Java SE类库查询手册、Eclipse常用快捷键说明文档、Eclipse提示与技巧电子书、50个Java常见面试题及解析电子书、21个Java常见错误及解决方案电子书、25个Java高效编程技巧、Java程序员职业规划、Java程序员面试技巧等。

读者对象

► 没有任何Java基础的初学者

► 有一定的Java基础,想精通Java 的人员

► 有一定的Java 基础,缺乏Java 实战经验的人员

► 大专院校及培训学校的老师和学生

光盘使用说明

01. 光盘运行后首先播放片头动画,之后进入光盘的主界面。其中包括【课堂再现】、【Java和Oracle项目实战教学录像】、【Java培训】三个学习通道,和【范例源码】、【实战练习答案】、【赠送资源】、【帮助文件】、【退出光盘】五个功能按钮。

02. 单击【课堂再现】按钮,进入多媒体同步教学录像界面。在左侧的章号按钮上单击鼠标左键,在弹出的快捷菜单上单击要播放的节名,即可开始播放相应的教学录像。

03. 单击【Java和Oracle项目实战教学录像】按钮,打开教学录像文件夹,在其子文件夹中选择要播放的视频文件,即可播放录像。

04.单击【范例源码】按钮,可打开本书范例源码文件夹。

05. 单击【实战练习答案】按钮,可在打开的文件夹中看到实战练习答案。

06. 单击【赠送资源】按钮可以查看随本书赠送的资源。

07. 单击【帮助文件】按钮,可以打开“光盘使用说明.pdf”文档,该说明文档详细介绍了光盘在电脑上的运行环境及运行方法等。

08. 单击【退出光盘】按钮,即可退出本光盘系统。

网站支持

更多学习资料,请访问www.51pcbook.cn。

创作团队

本书由龙马高新教育策划,河南工业大学张玉宏博士任主编(负责第0~12章及第19~20章),王云侠老师(负责第13~18章)、国家开放大学郝智红博士(负责第21~24章)和魏蔚博士(负责第25~29章)任副主编,参加资料整理的人员有王凯旋、蔡耀、李冰凯、李瑜、高泽民、宋文举、靳浩东、梁成浩、孔万里、李震、赵源源、乔娜、周奎奎、王果、陈小杰、左琨、邓艳丽、崔姝怡、侯蕾、左花苹、刘锦源、普宁、王常吉、师鸣若、钟宏伟、陈川、刘子威、徐永俊、朱涛和张允等。

在编写过程中,我们竭尽所能地将最准确的Java理解和感悟呈现给读者,但也难免有疏漏和不妥之处,敬请不吝指正。若您在学习过程中遇到困难或疑问,或有任何建议,可发送电子邮件至zhangyi@ptpress.com.cn。

编者

第0章Java 学习指南

本章视频教学录像:1 小时30 分钟

Java语言是一门优秀的编程语言,它的优点是与平台无关,可以实现“一次编写,到处运行”。Java是一门面向对象的计算机语言,它简洁高效,具有高度的可移植性。本章介绍Java的来源、基本思想、技术体系、应用领域和前景以及学习Java的技术路线。

本章要点(已掌握的在方框中打钩)

□ 了解Java的来源

□ 了解Java 的基本思想

□ 了解Java 的技术体系、应用前景

0.1 Java的来源

Java源自Sun公司的一个叫Green的项目,其原先的目的是为家用电子消费产品开发一个分布式代码系统,这样就可以将通信和控制信息发给电冰箱、电视机、烤面包机等家用电器,对它们进行控制和信息交流。最初Green项目的工程师们准备采用C++,但C++比较复杂,最后经过裁剪、优化和创新,1990年,由Sun公司的James Gosling(詹姆斯·高斯林)领导的小组基于C++开发了一种与平台无关的新语言Oak(Java的前身)。Oak的取名缘于Gosling办公室外有一棵枝繁叶茂的橡树,这在硅谷是一种很常见的树。

Oak主要用于为各种家用电器编写程序,Sun公司曾以Oak语言投标一个交互式电视项目,但结果被SGI(硅图公司——1982年成立于美国)打败。由于这些智能化家电的市场需求没有预期的高, Sun公司放弃了该项计划,Oak几乎面临夭折,恰巧这时Mark Ardreesen(美国软件工程师,曾创办网景通讯公司)开发的Mosaic浏览器(互联网历史上第一个获普遍使用且能够显示图片的网页浏览器)和Netscape浏览器(网页浏览器——市占率曾位居主导地位)启发了Oak项目组成员,让他们看见了Oak在互联网上应用的前景,于是他们改造了Oak。

Java主要设计者JamesGosling

Java标志

Java吉祥物Duke

1995年1月,Oak被改名为Java,这是因为Oak是一家显卡制造商已注册的商标。Oak若想发展壮大,法律层面上的改名势在必行。Java是印度尼西亚“爪哇(注:Java的音译)”岛的英文名称,该岛因盛产咖啡而闻名。这就是Java的官方商标是一杯浓郁的咖啡的原因。Sun随后开发了HotJava浏览器,得到了Sun公司时任首席执行官Scott McNealy的支持,触发了Java进军Internet。

Java技术是由美国Sun公司倡导和推出的,它包括Java语言和Java Media APIs、Security APIs、Management APIs、Java Applet、Java RMI、JavaBean、JavaOS、Java Servlet、JavaServer Page以及JDBC等。Java技术的发展重要历程简述如下(右图所示的是Java语言的吉祥物Duke)。

1996年2月,Sun公司发布Java芯片系列,包括PicoJava、MicroJava和UltraJava,并推出Java数据库连接范式JDBC(Java DataDase Connectivity),并给出对应的API(应用程序接口)。

1996年4月,Microsoft公司、SCO公司、Apple公司(苹果电脑公司)、NE C公司等获得Java的许可证。Sun公司宣布允许HP、Apple、日立、IBM、Microsoft、Novell、SGI、Tamdem、SCO等多家大型信息公司将Java平台嵌入到其操作系统中。

1996年5月,Sun公司在旧金山(San Francisco)举行了第一届JavaOne世界Java开发者大会。Sun公司在大会上推出诸如CommerceAPIs等一系列Java平台新技术及新的HotJava开发环境等。

1996年6月,Sun公司发布JSP 1.0,这里的JSP(JavaServer Pages)是由Sun 公司倡导、众多公司协同参与一起建立的一种动态网页技术标准。Sun公司同期还推出JDK(Java开发工具包)1.3和Java Web Server 2.0。

提示

由Java源代码编译出的二进制文件叫.class文件,如果使用十六进制编辑器(如UltraEdit)打开这个.class文件,你会发现该文件最前面的32位将显示为CA FE BA BE,连接起来也就是词组“CAFE BABE ”(咖啡宝贝),如下图所示。诸如James Gosling等这类编程天才都是在这些不经意的地方“雁过留声,人过留名”。

文件中的“咖啡宝贝”Java class。

1996年9月,Addison-Wesley和Sun公司推出Java虚拟机规范和Java类库。

1997年4月,第二届JavaOne世界大会召开,参与者逾一万人,创当时全球同类会议规模纪录。Java已深得业界认可。

1998年12月,Java2企业平台J2EE发布。

1999年6月,Sun公司针对不同用户群,发布了Java的三个版本:标准版(J2SE)、企业版(J2EE)和微型版(J2ME)。

2000年9月,Sun公司发布JSP1.2和Java Servlet 2.3 API。

2001年9月,J2EE1.3发布。

2002年2月,J2SE1.4发布,自此Java的计算能力有大幅提升。

2004年9月,J2SE1.5发布,成为Java语言发展史上的又一个里程碑。为了表示该版本的重要性, J2SE1.5更名为Java SE 5.0。

2005年6月,JavaOne大会召开,Sun公司公开Java SE 6。此时,Java的各种版本已经更名,取消了其中的数字“2”:J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME。

2006年12月,Sun公司发布JRE 6.0。

2009年4月,Oracle (甲骨文)公司以总额74亿美金收购Sun公司,Java版权归Oracle公司所有。

2009年12月,Sun公司发布企业版升级版Java EE 6。

2011年7月28日,Oracle公司发布Java SE 7。

0.2 Java的基本思想

在过去,大多数程序在移植到不同的操作系统平台(如UNIX、Linux和Windows等)上时,程序员通常不得不重新调试与编译这些程序,有时甚至需要重写。Java最大的优点就是在设计之初就秉承了“一次编写,到处运行”思想(Write Once, Run Everywhere,简称WORE,有时也写成“Write Once, Run Anywhere”,简称WORA),它是Sun 公司为宣传Java语言的跨平台特性而提出的口号。

Java的跨平台性是指在一种平台下用Java语言编写的程序可以在编译后不用经过任何更改,就能在其他平台上运行。比如,一个在Windows下开发出来的程序,在运行时可以无缝地部署到Linux、UNIX或Mac OS(苹果操作系统)环境之下。反之亦然,在Linux下开发的Java程序,同样可在Windows等其他平台上运行。Java是如何实现跨平台性的呢?我们可用下面的图来比拟说明。

比如说,中国人(一个平台)说的一句问候的话语:“你好,世界!”,美国人、法国人、德国人及日本人(其他平台)都能理解中国人的“问候”。之所以能这样,这得益于英文、法语、德语及日语翻译们的翻译。Java语言聪明之处在于,它用一个名为Java虚拟机(JVM—Java Virtual Machine)的机制屏蔽了这些“翻译”的细节。各国人尽管尽情地表达(编写Java代码),JVM在背后默默地帮他们干了“翻译沟通”的活。正是因为有JVM的存在,Java程序员才可以做到“一次编写,到处运行”——这正是Java的灵魂所在。JVM的思想将在1.6节给予更为详细的说明。

0.3 Java的技术体系

仅从传统意义上来看, Java技术体系包括以下几个组成部分:

●Java编程语言

●class文件格式

●Java API类库

●开源社区及商业机构的第三方Java类库

●各种平台上的Java虚拟机

什么是JDK?什么又是JRE?两者有什么区别与联系?

JDK:我们把Java编程语言、Java API类库和Java虚拟机这三部分统称为JDK(Java Development Kit,Java 开发工具包)(注:JDK包括JRE,Java基本类库,Java开发工具,如编辑器,调试器等)。JDK是用于支持Java程序开发的最小环境。有时为了方便起见,会以JDK来代替整个Java技术体系。

JRE: 我们把Java API类库中的Java SE API子集和Java虚拟机这两部分统称为JRE(Java Runtime Environment,Java运行时环境),JRE是支持Java程序运行的标准环境。

二者区别与联系:在Java技术体系上, JDK范围涵盖JRE,JRE是JDK的子集。如果仅仅是运行Java程序,用户计算机只需配置JRE环境;如果用户还想自己开发Java程序,则需要用户安装配置JDK环境。

按照Java技术关注的重点业务领域来划分,Java技术体系可以分为4个平台,如下图所示。

⑴ Java SE(Standard Edition,标准版):支持面向桌面级应用(如Windows下的应用程序)的Java平台,提供了完整的Java核心API,这个版本2005年以前称为J2SE。

⑵ Java EE(Enterprise Edition,企业版):以Java SE为基础,往外延伸,增加了许多支持企业内部使用的扩充类,支持使用多层架构的企业应用(如ERP—企业资源计划系统、CRM—客户关系管理系统的应用)的Java平台,除了提供Java SE API外,还对其做了大量的扩充并提供了相关的部署支持。这个版本2005年以前称为J2EE。

⑶ Java ME(Micro Edition,微型版):Java ME同样以Java SE为基础,但向内精简。它所支持的只有核心类的子集合,它支持Java程序运行在移动终端(手机、PDA—掌上电脑)上的平台,加入了针对移动终端的支持。这个版本2005年以前称为J2ME。Java的微型版主要是进行嵌入式开发,目前渐渐被Android开发所替代。

⑷ Java Card(智能卡版):由于服务对象定位更加明确化,Java Card版本比Java ME(微型版)更加精简。它支持一些Java小程序(Applets)运行在小内存设备(如容量小于64K的智能卡)的平台上。

但是,不管Java的技术平台如何划分,都是以Java SE为核心的,所以掌握Java SE最为重要,这也是本书的主要讲解范围。如果要想进行Java EE的开发,Java SE是其中必要的组成部分,这也就是为什么在学习Java EE之前要读者一定要有扎实的Java SE基础了。

0.4 Java无处不在

Java作为Sun公司推出的新一代面向对象程序设计语言,特别适于互联网应用程序的开发,但它的平台无关性直接威胁到了Wintel(即微软的Windows操作系统与Intel CPU所组成的个人计算机)的垄断地位,这表现在以下几个方面。

信息产业的许多国际大公司购买了Java许可证,包括IBM、Apple、DEC、Adobe、SiliconGraphics、HP、TOSHIBA以及Microsoft等。这一点说明,Java已得到了业界的高度认可。

众多的软件开发商开始支持Java软件产品。例如Inprise公司的JBuilder、Oracle公司自己维护的Java开发环境JDK与JRE。

Intranet正在成为企业信息系统最佳的解决方案,而其中Java将发挥不可替代的作用。Intranet的目的是将Internet用于企业内部的信息类型,它的优点是便宜、易于使用和管理。用户不管使用何种类型的机器和操作系统,界面是统一的Internet浏览器,而数据库、Web页面、Applet、 Servlet、JSP等则存储在Web服务器上,无论是开发人员还是管理人员,还是普通用户都可以受益于该解决方案。

虽然Sun公司被收购了,但Java作为Sun公司的优质资产被母公司Oracle公司高度重视,因此仍然得以继续“茁壮成长”。根据TIOBE公布的2015年1月份编程语言前10名排行榜(如下表所示), Java与C和Objective-C,名列前三甲。虽然不同的月份,前10名的地位可能有互换,但Java在整个编程领域的前三甲的地位基本是不动摇的。这从侧面可以反映,Java的无处不在,其应用领域和前景非常广阔。

从桌面办公到网络数据库,从PC机到嵌入式移动平台,从Java小应用程序(Applet)到架构庞大的J2EE企业级解决方案,处处都有Java的身影,就连美国大型太空(NASA)项目当中,也使用了Java来开发控制系统和相关软件。

Java技术的开放性、安全性和庞大的社会生态链以及其跨平台性,使得Java技术成为智能手机软件平台的事实性标准。在未来发展方向上,Java在Web、移动设备以及云计算等方面的应用前景也非常广阔。虽然面对来自网络的类似于Ruby on Rails这样编程平台的挑战,但Java依然还是事实上的企业Web开发标准。随着云计算(Cloud Computing)以及移动领域的扩张,更多的企业考虑将其应用部署在Java平台上,那么无论是本地主机,还是公共云,Java都是目前最合适的选择。

Java是目前世界上最流行的编程语言之一,而且也成为了事实上的应用层的开发标准,在很多的开发之中,都会把Java作为一些底层代码的操作功能的调用工具,如目前面向手机的Android开发。Java应用领域之广,也势必促使Java开发者的就业市场呈现欣欣向荣的发展态势。

学习Java不仅是学习一门计算机语言,更多的是学习一种思想,一种开发模式。对于从事软件行业的工作人员,掌握了Java语言,可以让自己日后的事业发展得更加顺利。Java语言由于学习相对完整,Java开发人员可以轻松转入到手机开发、.NET、PHP等语言的开发上,以后也可以更快的跨入到项目经理的行列之中。

目前,Java人才的需求量旺盛,根据IDC(International Data Corporation,国际数据公司)的统计数字,在所有软件开发类人才的需求中,对Java工程师的需求达倒全部需求量的60%~70%。同时,企业提供的薪水也不菲,通常来说,具有3年以上开发经验的工程师,年薪10万元以上是一个很正常的一个薪酬水平。但IT企业却很难招聘到合格的Java人才。所以读者朋友如果想让自己成为合格的受企业欢迎的Java程序员,需要做好自己的职业发展规划。

首先,要定位自己的目标,然后在有的放矢地进行自我提升。对于Java工程师来说,大致可以从三个大方向来规划自己的职业蓝图。

(一) 继续走技术工作之路。从技术发展方向来看,Java工程师则可以由最初的初级软件工程师即程序员逐渐晋升至中级软件工程师(高级程序员)、高级软件工程师及架构师等。走这条路,依然可进入电信、银行、保险专业软件开发公司等从事软件设计和开发工作。在信息时代,越来越多的公司重视信息化,而信息化落实起来离不开软件开发,而软件开发中Java当属挑大梁者。如果选择这个方法,程序员要脚踏实地,一步一个脚印地练好Java的基本功。对于初(中)级程序员来说首先掌握Java的基本语法(如类与对象、构造方法、引用传递、内部类、异常、包、Java常用类库、Java IO及Java类集等)。当然,如果读者定位高级程序员以上的目标,那么目标的实现主要依赖三点:一是前期扎实的Java基础,二是后期对软件开发持续性热爱,三是靠程序员个人的领悟。

(二)定位成为技术类管理人员,如产品研发经理、技术经理、项目经理及技术总监职位等。如果选择管理方向,首先要有一定的“基层“经验,至少要有几年的Java开发经验。否则,即使偶然因素让你“擢升‘至’管理层”,那么也会因为“外行指导内行”而饱受诟病,所以如果定位管理人员,那么成功的第一步就是至少成为一名中级以上的Java程序员,前面所言的Java基础也是需要掌握的。想成为技术类管理人员,还要深谙Java设计模式及软件工程的思想,从而能把控软件开发的全局。一个好的技术类管理人员,不仅要自身具有很强的技术管理能力,同时,也要有很强的技术体系建设和团队管理的能力,对自己所处的行业技术发展趋势和管理现状具有准确的判断。统筹全局、集各个层次的技术人员之合力,高质量完成软件项目,是成为技术类管理人员的挑战。

(三)在其他领域成就大业。Java软件开发发展前景好,运用范围也广,具备Java基础的工程师,还可以尝试着在其他领域成就一番大业。例如,Java工程师可以从事JSP网站开发、移动领域应用开发、电子商务开发等工作。如果从事WEB开发,那么在此之前一定要熟练掌握HTML、JavaScript、XML。在WEB开发中其核心就是进行数据库的操作,先从JSP(Java Server Pages)学习,并可以使用JSP + JDBC(Java Data Base Connectivity,Java数据库连接)或者是JSP + ADO(ActiveX Data Objects)完成操作。JSP技术是以Java语言作为脚本语言的。之后再学习MVC设计模式(Model View Controller),它是指软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。如果掌握了MVC设计,读者也就可以轻松地掌握AJAX(Asynchronous JavaScript and XML)和Struts技术。AJAX 是在不重新加载整个页面的情况下与服务器交换数据并更新部分网页的手段。Struts 是Apache软件基金会(ASF)赞助的一个开源项目。使用Struts机制可以帮助开发人员减少运用MVC设计模型开发Web应用的时间。

之后,再学习Hibernate和Spring等轻量级实体层开发方法等。Hibernate是一个开放源代码的Java语言下的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可便利地使用对象编程思维来操纵数据库。Spring Framework是一个开源的Java/Java EE全功能栈,其应用程序框架内包含了一些基于反射机制写的包,有了它以后程序员便可以将类的实例化写到一个配置文件里,由相应的Spring包负责实例化。

以上三条与Java相关的职业发展规划之路,都以夯实Java基础为根本。每一条路走到顶层,都需要重视基础,一步一个脚印,做事由浅入深,由简入繁,循序渐进。《礼记·中庸》有言:“君子之道,辟如行远必自迩,辟如登高必自卑”。这句话告诉我们,君子行事,就像走远路一样,必定要从近处开始;就像登高山一样,必定要从低处起步。

练就成为一名Java高手的过程可能需经历多年的时间。一些读者担心,自己可能等不到成为高手那一天,就无力开发Java了。其实,Java相关的开发行业也如陈年美酒,越陈越香。想一想,前面提到Java的核心设计者James Gosling,发髯皆白,却依然意气风发,时常给比他年轻很多岁的软件开发精英们讲解Java发展之道,那种指点江山的气势,是何等地豪迈!Java软件开发行业职业寿命很长,能提供给从业人员更广阔的发展方向。如果想在Java开发相关的领域有所建树,多一份持久的坚持是必须的。

0.5 Java学习经验谈

Java是一门面向对象编程(Object-oriented programming,简称OOP)语言,在学习的过程中一定要多从面向对象的角度去考虑问题。在初级入门阶段,读者要以上机实训为主,多动手,增强自己对Java代码的感性认识。感性认识积累多了,再配合书籍学好理论,这才能有高层次的理性认知。

学习任何编程语言,亲自动手编程实践是必不可少的。在阅读完每一个章节后,尽量将书上的实例代码和课后习题亲自编写一遍。在编写代码的过程中,一定要理清代码思路,发现问题,解决问题。对复杂的代码要反复揣摩,直至烂熟于心。

有些源代码已随书光盘里配备,有些网站上也提供现成的,但作为初学者,务必不能偷懒,直接复制,拿来就用。虽然亲自编写代码比较麻烦,也容易出错,但请记住:纠正这些错误正是非常好的学习机会!

从一个Java的初学者,升级为一个编程高手,没有捷径。其必经的一个成长路线正如下图所示:(1)编写代码 →(2)犯错(发现问题)→(3)纠错(解决问题)→(4)自我提升……积累了一定的感性认识后,才会有质的突变,提升至新的境界。总之,想成为一个高水平的Java程序员,一定要多动手练习,多思考。

阅读Java书籍也要掌握一定的技巧。建议读者在阅读时,快速看完某一章的全部内容,在第一遍阅读期间,可允许在一定程度上“不求甚解”。当读者掌握了Java的基础语法,初步理解了面向对象的编程主要特征后,这时应该重新看书——“温故而知新”,将书中的面向对象内容从头到尾再看一遍,进行知识的归类总结。建议在学习过程中记录心得和感悟,把自己对某一知识点的理解记录下来。在书本空白处,甚至可在个人的博客(如在CSDN程序员网站等)里纪录下自己的感悟,这样一来可加深自己理解,二来也可服务在此知识点困惑的其他读者,一举两得。

学习要循序渐进。在学习的初期,读者应从基础语法学起,不要拘泥于细节,耐得住性子,把书读完,先将容易理解的部分快速学会,再去研究晦涩的部分。当一个知识点实在搞不明白的时候,可以先把它记下来。先从宏观上对一个知识点有个整体的把握,然后回过头来再研究细节。一开始“有所舍弃”,之后“重头再来”,这会提高你的学习效率,让你养成一个良好的学习习惯。

在学习Java的过程中,可能会遇到许多的问题,下面推荐一些解决问题的途径。读者既可使用搜索引擎也可去专业的问答社区进行提问。搜索引擎,如谷歌 (http://www.google.com.hk/)、必应 (http://cn.bing.com/)及百度(http://www.baidu.com)都是读者朋友在学习过程中的 “好老师”。如果读者朋友的英语水平比较好,推荐访问国外知名网站StackOverFlow(http://stackoverflow.com/),这是一个高质量的问答社区,你在学习Java过程中遇到的问题,基本上其他的学习者也都会遇到,而在这里几乎都能得到高水平的解决方案。

如果本书已不能满足读者朋友的需求,那么恭喜你!很高兴你已从Java初学者过渡到高手“晋级者”。你所欠缺的是对面向对象编程思想更加深入的理解,是对面向对象的各种特性及其实现细节更加熟练的掌握。建议读者阅读偏重工程实践的书籍,或者诸如《Thinking in Java(Java编程思想)》等偏重理论认知的书籍。这类书籍通常涉及大量工程经验,讨论的议题也更加理论化,读者需要有充分的Java实战经验才能有所感悟和共鸣,因此并不适合作为初学者的阅读书籍。

0.6 Java学习路线图

本书主要是面向初学者或中级水平的读者的。针对本书,Java学习可以大致分为三个阶段。

⑴ 初级阶段:学习Java基础语法和类的创建与使用,基础I/O(输入/输出)操作、各种循环控制、运算符、数组的定义、方法定义格式、方法重载等,并熟练使用一种开发工具,如Eclipse等。

⑵ 中级阶段:掌握面向对象的封装、继承和多态,学习常用对象和工具类,深入I/O(输入/输出)操作,异常处理、Java的包管理机制、集合框架等。

⑶ 高级阶段:掌握Java的反射机制、泛型、网络编程、GUI开发、多线程、高级I/O、数据库编程、Java Applet等。

对于读者来说,Java学习的路线在整体上需遵循:初级阶段 中级阶段 高级阶段,循序渐进地学习(如上图所示),不建议读者一开始就“越级”学习,需知“欲速则不达”。在这三个阶段各自内部的知识点,没有必然的先后次序,读者可根据自己的实际情况“有的放矢”地学习。不管处于哪个学习阶段,读者都要重视Java的实战练习,等学习到高级阶段还要用一些项目实训来提升自己。

“罗马不是一日建成的(Rome was not built in a day)”,编程高手也不是一日能成就的。《荀子·劝学篇》亦有云:“骐骥一跃,不能十步;驽马十驾,功在不舍。学习Java的途中没有捷径,需要进行不断地理论学习、反复地实战练习才能将代码运用灵活,就好像练习武功一样,只有重视基本功,并持之以恒,才能让自己的动作收放自如,招式炉火纯青。

各位Java爱好者,想成为Java高手吗?赶快行动吧!