java自学必备的学习路线(零基础必看)JAVA自学之路一:学会选择为了就业,不少同学参加各种各样的培训。决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机、嵌入式、游戏、3G、测试等。那么究竟应该选择什么方向呢?我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当成学生,不要把自己的将来交给别人,学会运用自己的眼睛去观察,去了解这个世界吧。每个培训机构都会宣传自己的好处,并不能说明大的趋势。一些新闻文章很有可能是枪手写的,不必太过相信。国外背景的教师和课程,未必适合你。那么怎么才能确定自己将来的方向?如何才能从纷繁复杂、或真或假的数据世界中挖出一条路?我讲一个通过招聘网站的观察方法。可以到各种招聘的网站上查询信息(可以到google上查询招聘的网站),例如:51,智联,以及csdn等。这些数据都是最真实不掺假的原始数据,你可以每隔一段时间搜索一次,一些规律就会被总结出来了。华清小妹建议大家一定不要只看首页,动动手指多翻几页,多看看这样对各方面的评定是有很多帮助的,这样可以基本了解你算选择的行业的招聘职位数量,以及用人单位最关心的技能(这就是以后的大致的一个学习方向)。这样基本可以确定你需要重点学习那些知识。不过如果是为了快速的就业,把太多时间和精力花在很多职业生涯的前一、二年用不到的知识上就太可惜了。同时,并非某一个行业的职位数目少,就不能当作一个方向进行选择,比如.NET,我搜索到的职位数是1.6万左右,比java少,是不是就选java了呢?不一定,因为java职位虽然多,但是可能竞争者可能也多,有些方向虽然职位数不多,但是和你竞争这些职位的人数量也少,不见得就不能选择。不过,如果某一个方向的职位数目过少,你可就要小心了,选择这样的方向风险会非常大,如J2ME。我个人觉得java/J2EE、.net、嵌入式开发是不错的三个方向。如果非要在java和.net中选择的话,我个人是推荐java的,原因:1:Java能够开发linux、unix服务器上的程序2:JavaEE和.NET在企业应用方面的关注点是差不多的,但是学习了java如果将来想转到.net上会比较简单,几天的学习然后上手开发应该是问题不大的,但是反之就不行了。当然如果有了些经验之后,你就会发现语言或者平台不再是技术上的阻碍,一些原理性的东西学到手,然后再加上项目经验,使用什么平台,反而不是最重要的。不过如果非要用一种平台进入企业开发的领域,至少在目前,20017年9月,我推荐java。完全可以不同意我的观点,但是无庸置疑,如果是为了就业,多到招聘网站阅读阅读职位的信息,对你将来的方向和学习是大有益处的。选择是最痛苦的,看看《天生购物狂》中的刘青云就知道了,不过既然无法逃避,就作出自己的选择吧。每个人都会受到别人的影响,在作出决定之前,要想尽各种办法让自己理性一些吧。这样,你的选择会离正确的方向更近一些。JAVA自学之路二:JAVA自学路线图有不少的同学发信给我,和我探讨java的自学过程应该是什么样的,毕竟有很多人因为各种各样的原因不能参加培训。我试着给出自己的见解,抛砖引玉吧。这个路线图是给那些为了就业的人准备的,如果只是兴趣,不一定照这个走。这里只是讲了路线图,关于路线中的各个阶段,学到什么程度,如何学习等,可以参考后面的JAVA自学之路七:《路线图明细》。首先要学JavaSE,这是无庸置疑的。与此同时,是的,与此同时,和JavaSE的学习同步,建议大家研究一下数据结构与算法。在这儿之后,你可以选择向J2ME、或者JavaGUI、Socket编程等方向努力,但是通过第一篇的办法,你可以很容易就将这方向过滤掉(永远不要忘了我们是为了就业),好吧,暂时和它们诀别,还是向着J2EE的方向前进吧。在JavaSE完成之后,可以试着完成一些小项目,同时关注一下设计模式的内容,不必强求自己能够完全掌握各种细节,往前走吧。掌握一种编程工具,比如说Eclipse。数据库,可以选择使用Oracle或者MySQL开始JAVA自学之路三:要动手无论如何,请坚持不懈的动手实验!学习Java要动手,仅仅是看和听是不能够学好编程的。总有同学来信问我们这样的问题,说:老师我看了视频了,可是怎么一动手就没有任何思路呢?对此,我一般都会说不要着急,如果你只是看了视频就想行云流水的话,那老师这些年的锻炼真是白费了,这么多年的苦练才能略有些行云流水的感觉,你一朝一夕就想自己能够达到,不是太奢侈了吗我本人是在某一个领域画虎画了上万行代码的时候才慢慢有自己思路的。就像写作文,要有自己思路总是一般来说要经过几个阶段,首先学习词汇,然后学习造句,然后大量阅读别人的文章,自己模仿着写一些,逐渐的经验积累,才能形成自己的思路。学编程,恐怕也得慢慢的来吧,只是看一看、听一听视频,是不足以学好编程的。所以,动手吧,跟着做,一行一行的跟着敲,一个项目敲完了,比如坦克,再试着加一些自己的功能,按照自己的思路敲一些代码,收获远比干听大的多。如果遇到,暂时对于一些思路不能理解的同学,我一般都会劝告说,动手写,先写代码,量变会引起质变的。而这种质变的确发生过不少次。提醒一句,要理解代码思路之后再跟着敲,背着敲,千万不要左边摆着别人的程序,右边自己一个一个子母的写,这就不再是程序员了,成了打字员了。纸上得来终觉浅,所以:别问那么多,别想那么多,动手写吧。JAVA自学之路四:要事为先对待人生的任何事情都要:抓大放小,要事为先对于一个以前从来没有接触过java的人,java无疑是庞大的,似乎每个领域都可以拓展开来都是一片开阔地,每一个领域要想深入接触到每一个细节所耗费的精力都是巨大的。这个时候大家都胸怀壮志,两眼发光的盯着每一个崭新的知识点,遇见了任何一个知识点都恨不得抠的清清楚楚,明明白白。任何事情都要追求完美才敢继续往后进行,是一种性格缺陷大胆的放弃一些东西吧,有失才有得,把自己有限的、宝贵的精力用在对于就业直接相关的地方,这才是最有效率的学习方式!等你参加工作,有了可持续发展的事业动力和经济基础,有时间有精力闲的没事儿干的时候,再去研究那些其它吧。曾经有一个故事,说得是产能和产量的关系。一个人喜欢读书,读了一辈子,无所不通,这时候要做任何工作都可以,他的产能到了极致,但是,他老了,即便每天产出大量的东西也不能维持多久了,一辈子的产量并没有多少。另一个人直接工作,忙,天天在机器旁日复一日,做了一辈子,没时间学习和进修,可以想象,产量能有多大呢。人的一生,要锻炼产能,也要及时产出,引擎要转,也要停下来加油,这两者平衡的越好,你的贡献和产量就会越大。如果钻研的东西和产能目标(或者说近期的产能目标)无关的话,要舍得放手。所以,对于SWING,暂时先扔在一边吧。对于shell,对于各种协议过于详细的细节,对于喜欢的游戏编程,对于javascript各种华而不实的效果,都暂时和它们分别吧。一切和我们的直接工作目标关联不大的东西,扔在一边或者弄清楚到足够支持下一步的学习就可以了。那这样岂不是妨碍我成为通晓各种细节的高手了吗?我一向不认为一个人掌握了很多很多知识点的细节就是高手了,一个人如果告诉你,回字有四种写法,你会认为他是高手吗?毫不客气的说,现在我们所教授的所有知识细节在网上或书中都可以找到,只要你肯花时间花精力去动手试,去钻研,没有什么不能掌握的。struts、spring你能掌握吗?当然能!但是如果把时间花在spring的各种细节的研究上,这个精力就太浪费了,而且学习的积极性会受到打击,谁愿意整天泡在细节的蜘蛛网中挣扎不出来呢?谁愿意天天经历风雨却总是不能见到彩虹呢?盖房子,要先建骨架,再谈修饰。画山水,要先画结构,再谈润色。认识一台结构复杂的机器,应该首先认清楚脉络,然后再逐步认识每一个关节。为了应付从小学到大学的考试,我们背了各种各样的不应该提前掌握的细节,同时也养成了见到细节就抠的学习习惯。而现在,是到改改的时候了。请在合适的时间,做合适的事情吧。把时间和精力花在作项目上面,花在写作品以及锻炼解决问题的能力上面吧,这是迈向高手的正确的而且快速的方向。我一直不认为一个课程提供了很多很多的细节就是优秀的价值高的课程了,掌握必要的细节,这个不含糊,至于其他,或者通过视频给出(这样可以给出更多的细节,但是不占上课时间,课上只讲重要的、必要的细节知识),或者在掌握了自学的能力后自己能够查出,这才是正途。当你看书到某个地方暂时不理解的时候的,暂时放手吧,追求一些行云流水、自然而然的境界吧,只是不要停下前进的脚步,不要被大路旁边的支根末节干扰了你前进的行程,项目,真实的项目,这才是目的,就在不远的前方。陶渊明读书,叫做“不求甚解”,但他是大诗人。诸葛亮读书,总是“观其大略”,但他是大政治家。作研究的,是在确定了方向之后才详细的研究深入的东西。到了庐山,脉络形状扔在一边,盯着一棵棵小草、一粒粒石子的看,怎么样才能识得“真面目”?作为应用型的人才,是研究回字的n种写法还是抓紧时间向着主要应用的方向努力,请自己作出抉择。以项目驱动自己的学习吧,当把握了技术的脉络之后再去补充细节的研究,是正途。这辈子就不研究其他的方向了吗?当然要研究!但是在将来合适的时间再说吧。所以,抓大放小,要事为先!那么,在JAVA的这些课程中,哪些才是大,才是要事呢?请继续读下去。JAVA自学之路五:问题解决之道既然是学习,就不可能不遇到问题。既然是自学,就没有方便的和老师探讨的机会。那么,遇到问题之后,环境配不通,程序调不过,运行不正常,遇见这些恼人的问题的时候,该怎么办呢?首先我要恭喜你,遇见问题,意味着你又有涨经验的机会了,每解决一个问题,你的JAVA经验值就应该上升几百点,问题遇到的越多,知识提升的越快。但是总是解决不了也是很恼人的,怎么办呢?我一般要求我们的学生都是这样来进行的。当你遇到一个问题的时候:1:要仔细的观察错误的现象,是的,要仔细有不少同学的手非常快,在编译一个程序的时候,报了一大堆的错误,扫了一眼之后就开始盯着代码一行一行的找,看清什么错误了吗?没有!有的时候安装软件出问题了,一个对话框弹出来说出错了,马上举手问老师:“不得了了,出错了,出错了”。“什么错误?”“还没看呢?”这都是典型的不上心的方法!请记住,学习编程并不是一件很容易的事情,自己首先要重视,要用心才可以。在开发中,仔细观察出错信息,或者运行不正常的信息,是你要做的第一件事。读清楚了,才能在以后的步骤中有的放矢,哭了半天,总要知道哭的是谁才成。这里又分三种情况:A:错误信息读懂了,那么请进入2步:要仔细思考问题会出在哪些环节B:没读懂,愣是一点没看懂,进入第4步吧:googleC:读了个半懂,有些眉目但是不太能确定,第2步和第4步结合着来。2:要仔细思考问题会出在哪些环节(重要)当你读懂了一个问题之后,要好好的思考这个问题可能会在哪些环节上出错。一辆汽车从总成线上下来,车门子关不上!哪错了?你怎么查?当然是顺着生产线一站一站的查下来。程序也是一样的,也是一系列语句完成后产生的结果。写一个网络程序,总是发现服务器端打印不出接收的数据,有几个环节会出错?仔细分析这个现象的环节:客户端产生数据-按“发送”按钮-发送到服务器-服务器接收到后打印这几个环节都有可能会出错:有可能客户端根本就没产生数据,有可能发送按钮按下去后根本就没发出去,或者发出去的不是你产生的东西,或者根本就没连接网络,或者发送出去服务器没有接收到,或者接收到之前就打印了等等等等。学着去这样仔细的分析程序的环节和这些环节可能会产生的问题,你的经验值定然会大幅度快速的提升,这样做很累人,但是一件事情如果做下来一点都不累的话,这个东西还有价值吗?在网页A输入了一个人的名字,提交到B,首先存储到数据库,然后再读出来,发现乱码!怎么办?当然是分析环节:客户输入-HTTP发送-B接收-存储到数据库-读出-展现到网页每个环节都可能出问题,怎么才能知道哪里出的问题?继续往下读。3:如何定位错误(重要)分析清楚有哪些环节之后,下一步就是定