Java学习之路:不走弯路,就是捷径

Java学习之路:不走弯路,就是捷径

编辑删除转载2016-10-31 13:44:50php

标签:itjava编程程序员北京尚学堂html

版权声明:本文为北京尚学堂原创文章,未经容许不得转载。​java

1.如何学习程序设计?程序员

Java是一种平台,也是一种程序设计语言,如何学好程序设计不只仅适用于JAVA,对C++等其余程序设计语言也同样管用。有编程高手认为,JAVA也好C也好没什么分别,拿来就用。为何他们能达到如此境界?我想是由于编程语言之间有共通之处,领会了编程的精髓,天然可以作到一通百通。如何学习程序设计理所固然也有许多共通的地方。面试

1.1 培养兴趣算法

兴趣是可以让你坚持下去的动力。若是只是把写程序做为谋生的手段的话,你会活的很累,也太对不起本身了。多关心一些行业趣事,多想一想盖茨。不是提倡每天作白日梦,但人要是没有了梦想,你以为有味道吗?可能像许多深圳本地农民同样,打打麻将,喝喝功夫茶,拜拜财神爷;每月就有几万十几万甚至更多的进账,凭空多出个”食利阶层”。你认为,这样有味道吗?有空多到一些程序员论坛转转,你会发现,他们其实很乐观幽默,时不时会冒出智慧的火花。spring

1.2 慎选程序设计语言数据库

男怕入错行,女怕嫁错郎。初学者选择程序设计语言须要谨慎对待。软件开发不只仅是掌握一门编程语言了事,它还须要其余不少方面的背景知识。软件开发也不只仅局限于某几个领域,而是已经渗透到了各行各业几乎每个角落。编程

若是你对硬件比较感兴趣,你能够学习C语言/汇编语言,进入硬件开发领域。若是你对电信的行业知识及网络比较熟悉,你能够在C/C++等之上多花时间,以期进入电信软件开发领域。若是你对操做系统比较熟悉,你能够学习C/Linux等等,为Linux内核开发/驱动程序开发/嵌入式开发打基础。若是你想介入到应用范围最普遍的应用软件开发(包括电子商务电子政务系统)的话,你能够选择J2EE或.NET,甚至LAMP组合。每一个领域要求的背景知识不同。作应用软件须要对数据库等很熟悉。总之,你须要根据本身的特色来选择合适你的编程语言。设计模式

1.3 要脚踏实地,快餐式的学习不可取

先分享一个故事。

有一个小朋友,他很喜欢研究生物学,很想知道那些蝴蝶如何从蛹壳里出来,变成蝴蝶便会飞。有一次,他走到草原上面看见一个蛹,便取了回家,而后看着,过了几天之后,这个蛹出了一条裂痕,看见里面的蝴蝶开始挣扎,想抓破蛹壳飞出来。这个过程达数小时之久,蝴蝶在蛹里面很辛苦地拼命挣扎,怎么也无法子走出来。这个小孩看着看着不忍心,就想不如让我帮帮它吧,便随手拿起剪刀在蛹上剪开,使蝴蝶破蛹而出。但蝴蝶出来之后,由于翅膀不够力,变得很臃肿,飞不起来。

这个故事给咱们的启示是:欲速则不达

浮躁是现代人最广泛的心态,能怪谁?也许是贫穷落后了这么多年的缘故,就像当年的大跃进同样,都想大步跨入共产主义社会。许多初学者C++/JAVA没开始学,立马使用VC/JBuilder,会使用VC/JBuilder开发一个HelloWorld程序,就忙不迭的向世界宣告,”我会软件开发了”,简历上也大言不惭地写上”精通VC/JAVA”。结果到软件公司面试时要么被三两下打发走了,要么被驳的体无完肤,无地自容。处处碰壁以后才知道捧起《C++编程思想》《JAVA编程思想》仔细钻研,早知如此何须当初呀。更多精彩内容关注微信公众号:北京尚学堂。

“你如今讲究简单方便,你之后的路就长了”,好象也是佛经中的劝戒。

1.4 多实践,快实践

彭端淑的《为学一首示子侄》中有穷和尚与富和尚的故事。

从前,四川边境有两个和尚,一个贫穷,一个有钱。一天,穷和尚对富和尚说:”我打算去南海朝圣,你看怎么样?”富和尚说:”这里离南海有几千里远,你靠什么去呢?”穷和尚说:”我只要一个水钵,一个饭碗就够了。”富和尚为难地说:”几年前我就打算买条船去南海,可至今没去成,你仍是别去吧!”一年之后,富和尚还在为租赁船只筹钱,穷和尚却已经从南海朝圣回来了。

这个故事可解读为:任何事情,一旦考虑好了,就要立刻上路,不要等到准备周全以后,再去干事情。假如事情准备考虑周全了再上路的话,别人恐怕捷足先登了。软件开发是一门工程学科,注重的就是实践,”君子动口不动手”对软件开发人员来说根本就是错误的,他们提倡”动手至上”,但别惧怕,他们大多文质彬彬,没有暴力倾向,虽然有时候蓬头垢面的一副”比尔盖茨”样。有前辈高人认为,学习编程的秘诀是:编程、编程、再编程,笔者深表赞同。不只要多实践,并且要快实践。咱们在看书的时候,不要等到你彻底理解了才动手敲代码,而是应该在看书的同时敲代码,程序运行的各类状况可让你更快更牢固的掌握知识点。

1.5 多参考程序代码

程序代码是软件开发最重要的成果之一,其中渗透了程序员的思想与灵魂。许多人被《仙剑奇侠传》中凄美的爱情故事感动,悲剧的结局更有一种缺憾美。为何要以悲剧结尾?听说是由于写《仙剑奇侠传》的程序员失恋而安排了这样的结局,他把本身的感受融入到游戏中,却让众多的仙剑迷扼腕叹息。

多多参考代码例子,对,也能够研究一些开源的软件或框架。

1.6 增强英文阅读能力

对学习编程来讲,不要求英语,但不能一点不会,。最起码像JAVAAPI文档这些东西仍是要能看懂的,连猜带懵均可以;旁边再开启一个”金山词霸”。看多了就会愈来愈熟练。在学JAVA的同时学习英文,一举两得多好。另外好多软件须要到英文网站下载,你要可以找到它们,这些是最基本的要求。英语好对你学习有很大的帮助。口语好的话更有机会进入管理层,进而能够成为剥削程序员的”周扒皮”。更多精彩内容关注微信公众号:北京尚学堂。

1.7 万不得已才请教别人

大部分的问题学生稍作思考就能够解决。请教别人以前,你应该先回答以下几个问题。

你是否在google中搜索了问题的解决办法?

你是否查看了JAVAAPI文档?

你是否查找过相关书籍?

你是否写代码测试过?

若是回答都是”是”的话,并且尚未找到解决办法,再问别人不迟。要知道独立思考的能力对你很重要。要知道程序员的时间是很宝贵的。

1.8 多读好书

书中自有颜如玉。比尔?盖茨是一个饱读群书的人。虽然没有读完大学,但九岁的时候比尔?盖茨就已经读完了全部的百科全书,因此他精通天文、历史、地理等等各种学科,能够说比尔?盖茨不只是当今世界上金钱的首富,并且也能够称得上是知识的巨富。

笔者在给学生上课的时候常常会给他们推荐书籍,到后来学生实在忍无可忍开始抱怨,”天呐,这么多书到何时才能看完了”,”学软件开发,感受上了贼船”。这时候,个人回答通常是,”别着急,何时带大家去看看个人书房,到如今每个月花在技术书籍上的钱400元,这在软件开发人员之中还只可以算是中等的”,学生当场晕倒。(注:这一部分学生是刚学软件开发的)

1.9 使用合适的工具

工欲善其事必先利其器。软件开发包含各类各样的活动,需求收集分析、创建用例模型、创建分析设计模型、编程实现、调试程序、自动化测试、持续集成等等,没有工具帮忙能够说是步履维艰。工具能够提升开发效率,使软件的质量更高BUG更少。组合称手的武器。到飞花摘叶皆可伤人的境界就很高了,无招胜有招,手中无剑心中有剑这样的境界几乎不可企及。更多精彩内容关注微信公众号:北京尚学堂。

2.软件开发学习路线

两千多年的儒家思想孔孟之道,中庸的思想透入骨髓,既不冒进也不保守并不是中庸之道,而是找寻学习软件开发的正确路线与规律。

从软件开发人员的生涯规划来说,咱们能够大体分为三个阶段,软件工程师→软件设计师→架构设计师或项目管理师。不想当元帅的士兵不是好士兵,不想当架构设计师或项目管理师的程序员也不是好的程序员。咱们应该努力往上走。让咱们先整理一下开发应用软件须要学习的主要技术。

A.基础理论知识,如操做系统、编译原理、数据结构与算法、计算机原理等,它们并不是不重要。如不想成为计算机科学家的话,能够采起”用到的时候再来学”的原则。

B.一门编程语言,如今基本上都是面向对象的语言,JAVA/C++/C#等等。若是作WEB开发的话还要学习HTML/Jav**ript等等。

C.一种方法学或者说思想,如今基本都是面向对象思想(OOA/OOD/设计模式)。由此而衍生的基于组件开发CBD/面向方面编程AOP等等。

D.一种关系型数据库,Oracle/SqlServer/DB2/MySQL等等

E.一种提升生产率的IDE集成开发环境JBuilder/Eclipse/VS.NET等。

F.一种UML建模工具,用ROSE/VISIO/钢笔进行建模。

G.一种软件过程,RUP/XP/CMM等等,经过软件过程来组织软件开发的众多活动,使开发流程专业化规范化。固然还有其余的一些软件工程知识。

H.项目管理、体系结构、框架知识。

正确的路线应该是:B→C→E→F→G→H。

还须要补充几点:

1)对于A与C要补充的是,咱们应该在实践中逐步领悟编程理论与编程思想。新技术虽然不断涌现,更新速度使人眼花燎乱雾里看花;但万变不离其宗,编程理论与编程思想的变化却很慢。掌握了编程理论与编程思想你就会有拨云见日之感。面向对象的思想在目前来说是至关关键的,是强势技术之一,在上面须要多投入时间,给你的回报也会让你惊喜。

2)对于数据库来讲是独立学习的,这个时机就由你来决定吧。

3)编程语言做为学习软件开发的主线,而其他的做为辅线。

4)软件工程师着重于B、C、E、D;软件设计师着重于B、C、E、D、F;架构设计师着重于C、F、H。

3.如何学习JAVA?

3.1 JAVA学习路线

3.1.1 基础语法及JAVA原理

基础语法和JAVA原理是地基,地基不牢靠,犹如沙地上建摩天大厦,是至关危险的。学习JAVA也是如此,必需要有扎实的基础,你才能在J2EE、J2ME领域游刃有余。参加SCJP(SUN公司认证的JAVA程序员)考试不失为一个好方法,缘由之一是为了对得起你交的1200大洋考试费,你会更努力学习,缘由之二是SCJP考试可以让你把基础打得很牢靠,它要求你跟JDK同样熟悉JAVA基础知识;可是你千万不要认为考过了SCJP就有多了不得,就可以得到软件公司的青睐,就可以获取高薪,这样的想法也是很危险的。得到”真正”的SCJP只能证实你的基础还过得去,但离实际开发还有很长的一段路要走。

3.1.2 OO思想的领悟

掌握了基础语法和JAVA程序运行原理后,咱们就能够用JAVA语言实现面向对象的思想了。面向对象,是一种方法学;是独立于语言以外的编程思想;是CBD基于组件开发的基础;属于强势技术之一。当之后因工做须要转到别的面向对象语言的时候,你会感到特别的熟悉亲切,学起来像喝凉水这么简单。更多精彩内容关注微信公众号:北京尚学堂。

使用面向对象的思想进行开发的基本过程是:

●调查收集需求。

●创建用例模型。

●从用例模型中识别分析类及类与类之间的静态动态关系,从而创建分析模型。

●细化分析模型到设计模型。

●用具体的技术去实现。

●测试、部署、总结。

3.1.3 基本API的学习

进行软件开发的时候,并非什么功能都须要咱们去实现,也就是经典名言所说的”不须要从新发明轮子”。咱们能够利用现成的类、组件、框架来搭建咱们的应用,如SUN公司编写好了众多类实现一些底层功能,以及咱们下载过来的JAR文件中包含的类,咱们能够调用类中的方法来完成某些功能或继承它。那么这些类中究竟提供了哪些方法给咱们使用?方法的参数个数及类型是?类的构造器需不须要参数?总不可能SUN公司的工程师打国际长途甚至飘洋过海来告诉你他编写的类该如何使用吧。他们只能提供文档给咱们查看,JAVADOC文档(参考文献4.4)就是这样的文档,它能够说是程序员与程序员交流的文档。

基本API指的是实现了一些底层功能的类,通用性较强的API,如字符串处理/输入输出等等。咱们又把它成为类库。熟悉API的方法一是多查JAVADOC文档(参考文献4.4),二是使用JBuilder/Eclipse等IDE的代码提示功能。

3.1.4 特定API的学习

JAVA介入的领域很普遍,不一样的领域有不一样的API,没有人熟悉全部的API,对通常人而言只是熟悉工做中要用到的API。若是你作界面开发,那么你须要学习Swing/AWT/SWT等API;若是你进行网络游戏开发,你须要深刻了解网络API/多媒体API/2D3D等;若是你作WEB开发,就须要熟悉Servlet等API啦。总之,须要根据工做的须要或你的兴趣发展方向去选择学习特定的API。

3.1.5 开发工具的用法

在学习基础语法与基本的面向对象概念时,从锻炼语言熟练程度的角度考虑,咱们推荐使用的工具是Editplus/JCreator+JDK,这时候不要急于上手JBuilder/Eclipse等集成开发环境,以避免过于关注IDE的强大功能而分散对JAVA技术自己的注意力。过了这一阶段你就能够开始熟悉IDE了。

程序员平常工做包括不少活动,编辑、编译及构建、调试、单元测试、版本控制、维持模型与代码同步、文档的更新等等,几乎每一项活动都有专门的工具,若是独立使用这些工具的话,你将会很痛苦,你须要在堆满工具的任务栏上不断的切换,效率很低下,也很容易出错。在JBuilder、Eclipse等IDE中已经自动集成编辑器、编译器、调试器、单元测试工具JUnit、自动构建工具ANT、版本控制工具CVS、DOC文档生成与更新等等,甚至能够把UML建模工具也集成进去,又提供了丰富的向导帮助生成框架代码,让咱们的开发变得更轻松。应该说IDE发展的趋势就是集成软件开发中要用到的几乎全部工具。

从开发效率的角度考虑,使用IDE是必经之路,也是从一个学生到一个职业程序员转变的里程碑。

JAVA开发使用的IDE主要有Eclipse、JBuilder、JDeveloper、NetBeans等几种;而Eclipse、JBuilder占有的市场份额是最大的。JBuilder在近几年来一直是JAVA集成开发环境中的霸主,它是由备受程序员尊敬的Borland公司开发,在硝烟弥漫的JAVAIDE大战中,以其快速的版本更新击败IBM的VisualAgeforJAVA等而成就一番伟业。IBM在VisualAgeforJAVA上已经无利可图之下,干脆将之贡献给开源社区,成为Eclipse的前身,真所谓”柳暗花明又一村”。浴火重生的Eclipse以其开放式的插件扩展机制、免费开源得到广大程序员(包括几乎全部的骨灰级程序员)的青睐,极具发展潜力。

3.1.6 学习软件工程

对小型项目而言,你可能认为软件工程没太大的必要。随着项目的复杂性愈来愈高,软件工程的必要性才会体现出来。参见”软件开发学习路线”小节。

3.2 学习要点

确立的学习路线以后,咱们还须要总结一下JAVA的学习要点,这些要点在前文多多少少提到过,只是笔者以为这些地方特别要注意才对它们进行汇总,不要嫌我婆婆妈妈啊。

3.2.1 勤查API文档

当程序员编写好某些类,以为颇有成就感,想把它贡献给各位苦难的同行。这时候你要使用”javadoc”工具(包含在JDK中)生成标准的JAVADOC文档,供同行使用。J2SE/J2EE/J2ME的DOC文档是程序员与程序员交流的工具,几乎人手一份,除了菜鸟以外。J2SEDOC文档官方下载地址:http://java.sun.com/j2se/1.5.0/download.jsp,你能够到google搜索CHM版本下载。也能够在线查看:http://java.sun.com/j2se/1.5.0/docs/api/index.html。

对待DOC文档要像毛主席语录,早上起床念一遍,吃饭睡觉前念一遍。

当须要某项功能的时候,你应该先查相应的DOC文档看看有没有现成的实现,有的话就没必要劳神费心了直接用就能够了,找不到的时候才考虑本身实现。使用步骤通常以下:

●找特定的包,包通常根据功能组织。

●找须要使用类,类命名规范的话咱们由类的名字可猜出一二。

●选择构造器,大多数使用类的方式是建立对象。

●选择你须要的方法。

3.2.2 查书/google->写代码测试->查看源代码->请教别人

当咱们遇到问题的时候该如何解决?

这时候不要急着问别人,太简单的问题,没通过思考的问题,别人会所以而瞧不起你。能够先找找书,到google中搜一下看看,绝大部分问题基本就解决了。而像”某些类/方法如何使用的问题”,DOC文档就是答案。对某些知识点有疑惑是,写代码测试一下,会给你留下深入的印象。而有的问题,你可能须要直接看API的源代码验证你的想法。万不得已才去请教别人。

3.2.3 学习开源软件的设计思想

JAVA领域有许多源代码开放的工具、组件、框架,JUnit、ANT、Tomcat、Struts、spring、Jive论坛、PetStore宠物店等等多如牛毛。这些但是前辈给咱们留下的瑰宝呀。入宝山而空手归,你心甘吗?对这些工具、框架进行分析,领会其中的设计思想,有朝一日说不定你也能写一个XXX框架什么的,风光一把。分析开源软件实际上是你提升技术、提升实战能力的便捷方法。

3.2.4 规范的重要性

没有规矩,不成方圆。这里的规范有两层含义。第一层含义是技术规范,多到http://www.jcp.org下载JSRXXX规范,多读规范,这是最权威准确最新的教材。第二层含义是编程规范,若是你使用了大量的独特算法,富有个性的变量及方法的命名方式;同时,没给程序做注释,以显示你的编程功底是多么的深厚。这样的代码别人看起来像天书,要理解谈何容易,更不用说维护了,必然会被无情地扫入垃圾堆。JAVA编码规范到此查看或下载http://java.sun.com/docs/codeconv/,中文的也有,啊,还要问我在哪,请参考3.2.2节。

3.2.5 不局限于JAVA

很不幸,很幸运,要学习的东西还有不少。不幸的是由于要学的东西太多且多变,没时间陪老婆家人或女友,致使身心疲惫,严重者甚至致使抑郁症。幸运的是别人要抢你饭碗绝非易事,他们或她们须要付出不少才能达成心愿。​更多精彩内容关注微信公众号:北京尚学堂。

结束语

JAVA不要孤立地去学习,须要综合学习数据结构、OOP、软件工程、UML、网络编程、数据库技术等知识,用横向纵向的比较联想的方式去学习会更有效。如学习JAVA集合的时候找数据结构的书看看;学JDBC的时候复习数据库技术;采起的依然是”须要的时候再学”的原则。​

若是你的目标是就业,而且是高薪就业,那么北京尚学堂是你正确的选择。北京尚学堂一直在为改变中国IT教育努力着。十年以来,北京尚学堂坚守“为莘莘学子改变命运而讲课”这份情怀,不忘初心。感谢你们的阅读!​

更多猛料!欢迎扫描上方二维码关注北京尚学堂官方微信公众号 ( 资料领取验证消息:156)

相关文章
相关标签/搜索