java的学习经验
介绍
软件开发的道路充满荆棘和挑战,也充满希望。Java学习也是一样,没有捷径。梦想像《八龙》里的虚竹一样被五鸭子开导,轻松获得一技之长,是不现实的。我每天都对着天哭,“上帝啊,请给我一本葵花宝典。”我不知道,即使你拿到了葵花宝典,除了承受自己的尴尬,也不一定会成为“东方不败”,但成为“西方失败者”的概率更高。
“不走弯路,便是捷径”,佛经中不无道理。
1.如何学习编程?
Java是一个平台,也是一种编程语言。如何学好编程不仅适用于Java,也适用于C++等其他编程语言。有些程序员觉得Java或者C没什么区别,就用吧。为什么他们能达到这样的境界?我觉得是因为编程语言之间有相似之处,我明白编程的本质,所以自然什么都能做。当然,如何学习编程也有很大关系。
1.1培养兴趣
兴趣是能让你坚持下去的动力。如果只是把写程序当做谋生的手段,会活得很累,会自怜自艾。多关注一些业内趣事,多想想盖茨。我不是提倡天天做白日梦,但是你觉得人没有梦想有意思吗?也许像许多当地农民一样,他们打麻将,喝功夫茶,崇拜财神。每个月都有几万甚至更多的账户,凭空产生了一个“逐利阶层”。你觉得是这个味道吗?有空去逛逛一些程序员的论坛,你会发现他们其实很乐观很幽默,时不时会有智慧的火花。
1.2谨慎选择编程语言
男人怕入错行,女人怕嫁错人。初学者在选择编程语言时需要谨慎。软件开发不仅仅是掌握一门编程语言,还需要很多其他的背景知识。软件开发已经不局限于少数领域,几乎渗透到了各行各业的每个角落。
如果对硬件感兴趣,可以学习C语言/汇编语言,进入硬件开发领域。如果熟悉电信行业知识和网络,可以多花点时间在C/C++上,进入电信软件开发领域。如果熟悉操作系统,可以学习C/Linux等,为Linux内核开发/驱动开发/嵌入式开发打下基础。
如果想涉足应用最广泛的应用软件开发(包括电子商务电子政务系统),可以选择J2EE或。网,甚至灯的组合。每个领域需要不同的背景知识。做应用软件需要熟悉数据库等等。简而言之,你需要根据自己的特点选择合适的编程语言。
1.3要脚踏实地,快餐式学习不可取。
先分享一个故事。
有个小孩很喜欢学生物,想知道那些蝴蝶是怎么从蛹壳里出来,变成蝴蝶飞起来的。有一次,他去草原,看到一只蛹,就把它带回家。然后他看着。过了几天,蛹出现了一条裂缝,他看到里面的蝴蝶开始挣扎,想抓破蛹壳飞出去。这个过程持续了几个小时,蝴蝶在蛹里非常努力地挣扎,却怎么也出不来。孩子看着不忍心,觉得还是我帮他比较好,就拿起剪刀在蛹上剪开,让蝴蝶破茧而出。但是蝴蝶出来后,因为翅膀不够有力,变得臃肿,飞不起来。
这个故事的教训是:欲速则不达。
浮躁是现代人最常见的心态。能怪谁呢?也许是因为贫穷落后了这么多年,就像大跃进一样,大家都想大步迈入社会主义社会。现在的软件公司,客户,政府,学校,培训机构等等都充斥着浮躁。以我熟悉的大连理工大学IT职业培训为例。居然标榜“20多年的计算机职业教育,是辽宁省十强学校”,却不知道中国只发展了几年计算机,几年软件,居然还有很多学生报名,简直是对全世界程序员的鄙视。大多数受过训练的“程序员”都不知道什么是OO和OP。如果社会环境就是这样,我们改变不了,只能改变自己。市中心的宁静是珍贵的。很多C++/Java的初学者没有开始学习,就马上用VC/JBuilder,用VC/JBuilder开发了一个Hello World程序。他们争先恐后地向世界宣布“我可以开发软件”,并在简历上写下“精通VC/Java”。结果去软件公司面试,不是被打发走三两次,就是被驳得体无完肤。直到到处碰壁我才知道,我拿起《C++编程思想》和《Java编程思想》认真研究起来。如果我知道这些,我为什么要知道?
“现在讲究简单方便,以后的路会很长”,这似乎是佛经中的一句劝诫。
1.4多练,练的更快。
彭端淑的《示子侄学》讲述了一个穷和尚和一个富和尚的故事。
从前,在四川的边境上有两个和尚。一个是穷人,另一个是富人。一天,穷和尚对富和尚说:“我要去南海朝圣。你怎么看?”富和尚说:“这里离南海有几千英里远。你怎么去那里?”贫僧说:“我只要一个水碗和一个饭碗。”富和尚尴尬地说:“几年前我就打算买艘船去南海,但现在还没做成。你最好不要去!”一年后,富和尚仍然在筹钱租一艘船,但穷和尚已经从南海朝圣回来了。
这个故事可以解释为:任何事情,一旦考虑好了,就应该马上上路,不要等到准备好了再去做任何事情。如果在上路之前就准备好要考虑的事情,别人可能会捷足先登。软件开发是一门工程学科,重在实践。软件开发者说“君子动口不动手”是根本错误的。他们主张“先下手为强”,但不要怕。他们大多性格温和,没有暴力倾向,虽然有时候看起来像“比尔·盖茨”。有资深专家认为,学习编程的秘诀是:编程、编程、再编程,我深表赞同。不仅要多练,还要练得快。当我们在阅读一本书的时候,不要等到你完全理解了之后才敲代码。相反,我们应该一边看书一边打代码。程序运行的各种情况可以让你更快更牢固的掌握知识点。
1.5多引用程序代码
程序代码是软件开发最重要的成果之一,它渗透着程序员的思想和灵魂。很多人被《仙剑奇侠传》中悲情的爱情故事感动,悲剧的结局更是美不胜收。为什么会以悲剧收场?据说写仙剑奇侠传的程序员失恋了,安排了这样的结局。他把自己的感情融入到了游戏中,却让很多剑迷感叹。
参考许多代码示例。对于Java,有参考文献[4.3],API类的源代码(JDK安装目录下的src.zip文件),也可以研究一些开源软件或框架。
1.6强化英语阅读能力
对于学习编程来说,英语不是必须的,但也不能一点都不懂。至少像Java API文档(参考文献[4.4])这样的东西应该是可以理解的,甚至是猜测和混淆的;打开旁边一个“金山词霸”。你看得越多,你就会变得越熟练。边学Java边学英语,一举两得。另外,很多软件需要从英文网站下载。你应该能找到他们。这些都是最基本的要求。好的英语对你的学习有很大的帮助。如果你英语说得好,你就有更好的机会进入管理层,然后你就可以成为剥削程序员的“周扒手”。
1.7万非要问别人。
在Martix和Java论坛的在线辅导系统中解决学生问题时,笔者发现大部分问题只要学生稍加思考就能解决。在咨询他人之前,你应该回答以下问题。
你在谷歌上搜索解决问题的方法了吗?
你查过Java API文档吗?
你查过相关书籍吗?
你写过代码测试吗?
如果答案是“是”,而且还没有找到解决办法,再去问别人也不迟。要知道,独立思考的能力对你来说很重要。要知道,程序员的时间是宝贵的。
1.8多读好书
颜如玉在书中。比尔·盖茨是一个博览群书的人。虽然没有读完大学,但比尔·盖茨九岁的时候就已经读完了所有的百科全书,所以他精通天文、历史、地理等等。弗朗兹不仅是当今世界上金钱上的首富,也是知识上的首富。
我经常在给学生上课的时候给他们推荐书籍。后来有学生不忍心抱怨“天啊,我什么时候才能看完这么多书?”以及“学软件开发让我觉得自己像个小偷。”这时候我的回答一般是“别急,我什么时候给你看我的书房?到现在,每个月花在技术书上的钱在400元里,在软件开发者中也只是中等水平。”学生当场晕倒。(注:这部分学生是刚学软件开发的)
使用合适的工具
工欲善其事,必先利其器。软件开发包括需求收集和分析、建立用例模型、建立分析和设计模型、编程实现、调试程序、自动测试、持续集成等各种活动。没有工具的帮助,可以说是无法前进的。工具可以提高开发效率,让软件质量更高,bug更少。结合双手的武器。飞花摘叶能伤人的境界很高。不出招几乎不可能赢,手里有剑,心里有剑。
2.软件开发学习路线
两千多年来,儒家、孔孟、中庸深入骨髓。它既不激进也不保守,不是中庸之道。而是为了找到学习软件开发的正确路线和规律。
就软件开发人员的职业规划而言,我们大致可以分为三个阶段:软件工程师→软件设计师→架构师或者项目管理师。不想当元帅的士兵不是好士兵,不想当架构师或项目管理师的程序员不是好程序员。我们应该试着往上走。我们先梳理一下开发应用软件需要学习的主要技术。
A.基础理论知识,如操作系统、编译原理、数据结构与算法、计算机原理等。,都不是不重要的。如果你不想成为一名计算机科学家,你可以采取“需要时学习”的原则。
B.一种编程语言,现在基本上是面向对象的语言,Java/C++/C#等等。做WEB开发的话,就得学HTML/JavaScript之类的。
C.一种方法论或思想现在基本上是一种面向对象的思想(OOA/OOD/设计模式)。由此产生的基于组件的开发CBD/ AOP等等。
D.关系数据库,如ORACLE/SqlServer/DB2/MySQL等。
E.提高生产力的IDE集成开发环境JBuilder/Eclipse/VS.NET等。
F.一个UML建模工具,用ROSE/VISIO/ pen建模。
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文件中包含的类。我们可以调用类中的方法来完成一些功能或者继承它们。那么这些类中提供了哪些方法供我们使用呢?该方法的参数数量和类型是什么?类的构造函数需要参数吗?太阳公司的工程师不可能打个国际电话甚至漂洋过海告诉你怎么用他写的类。他们只能提供文件给我们看。Java DOC文档(参考文献4.4)就是这样一个文档,可以说是程序员之间的交流文档。
基础API是指实现一些底层功能的类,比如字符串处理/输入/输出等等。我们又叫它类库。熟悉API的方法一是查Java DOC文档(参考文献4.4),二是使用JBuilder/Eclipse等IDE的代码提示功能。
3.1.4学习特定API
Java涉及的领域很广,不同的领域有不同的API。没有人熟悉所有的API,但普通人只熟悉工作中要用到的API。如果你做界面开发,那么你需要学习API比如Swing/AWT/SWT;如果开发网络游戏,需要对网络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公司开发的。在硝烟弥漫的Java IDE大战中,JBuilder凭借快速的版本更新,击败了IBM的Java视觉时代,立下了汗马功劳。IBM在Visual Age for Java已经无利可图,于是干脆贡献给开源社区,成为Eclipse的前身。真的叫“又一个前途光明的村子”。浴火重生的Eclipse以其开放的插件扩展机制和免费开源赢得了程序员(包括几乎所有的铁杆程序员)的青睐,发展潜力巨大。
3.1.6学习软件工程
对于小项目,你可能认为软件工程没有必要。随着项目越来越复杂,软件工程的必要性就会体现出来。参见“软件开发的学习路线”一节。
3.2学习要点
在既定的学习路线之后,我们还是需要总结一下Java学习的要点。这几点在之前的文章中或多或少都有提及,但我觉得这些地方要特别注意总结,不要对我婆婆有所怀疑。
3.2.1经常检查API文件。
程序员把某些类写好了,很有成就感,想贡献给你苦难的同事。此时,您应该使用“Javadoc”工具(包含在JDK中)来生成标准的Java DOC文档,供同行使用。J2SE/J2EE/J2ME的DOC文档是程序员相互交流的工具,几乎每个人都有一个,除了新手。J2SE DOC文档官方下载地址为:/J2SE/1.5.0/download.jsp,可以在google上搜索CHM版本下载。也可以在线查看:/J2SE/1 . 5 . 0/docs/API/index . html
像对待毛语录一样对待DOC文件,在早上和吃饭睡觉前阅读。
当你需要一个函数的时候,首先要查看对应的DOC文档,看看有没有现成的实现。如果有,就不用费心直接用了。找不到的时候,就要考虑自己去实现。使用步骤一般如下:
●找具体的包,一般是按照功能组织的。
●如果需要用到类和类命名规范,我们可以从类名中猜出一二。
●选择建造师。使用类的大多数方法是创建对象。
选择你需要的方法。
3.2.2图书搜索/谷歌-& gt;写代码测试->;检查源代码-& gt;问问别人。
遇到问题应该怎么办?
这个时候不要急着问别人。太简单的问题,考虑不周的问题,会让别人看不起你。可以先找书,在谷歌搜索,大部分问题基本就解决了。而像“如何使用一些类/方法”,DOC文档就是答案。如果你对某些知识点有疑问,写代码测试一下,会给你留下深刻的印象。对于一些问题,你可能需要直接看API的源代码来验证你的想法。万不得已问别人。
3.2.3学习开源软件的设计思路。
Java领域有很多开源的工具、组件和框架,比如JUnit、ANT、Tomcat、Struts、Spring、Jive Forum、PetStore等等。这些都是前人留下的宝藏。你愿意去宝山空手而归分析这些工具和框架,了解他们的设计思路吗?说不定哪天能写个XXX框架什么的。分析开源软件其实是一种提高你技术和实战能力的便捷方式。
规范的重要性
没有规则,就没有方圆。这里的规范有两层意思。第一层的意思是技术规范,范围从/docs/codeconv/到中文。啊,如果你想知道我在哪里,请参考3.2.2节。
不限于Java
可惜,幸运的是,要学的还有很多。可惜因为要学的东西太多太多变,没有时间陪老婆,陪家人,陪女朋友,导致身心疲惫,严重时甚至抑郁。好在别人抢你的饭碗不容易。他们或者他们需要付出很多才能实现自己的愿望。
Java不应该孤立地学习。需要学习数据结构、OOP、软件工程、UML、网络编程、数据库技术等知识。用横向和纵向联想的方式学习会更有效。比如学习Java集合的时候,找一本关于数据结构的书;学习JDBC时复习数据库技术;仍然采用“必要时学习”的原则。
4.结束语
需要强调的是,学习软件开发确实很难,很辛苦,需要付出很多努力,但是不要半途而废。如果这篇文章能对一直在爪哇岛外徘徊的朋友有所帮助,笔者也是欣慰的。哈哈,为什么听起来很老套?没办法。在电脑的长期辐射下,我正在变成一个小老头。最后,我奉劝各位程序员,尤其是MM程序员,结束工作后尽快远离电脑。据《胡博乱报》报道,电脑辐射会在白皙的皮肤上修饰一些小黑点,看起来很亮...明天的梦想还得靠自己拖起来!