转-如何学习java

:(如何学习Java呢?) 枫叶国游子 2001-07-04 12:37:58
我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。

学习Java其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。每一种语言的程序设计思想大同小异,只是一些由语言特性的而带来的细微差别,比如Java中的Interface,你几乎在以前的学习中没有碰到过。以下我仔细给你说几点:

1。我们必须明确一个大方向,也就是说现在面向对象的编程范畴。尽管人工智能曾经有所浪潮(看看Borland为什么有Turbo Prolog),但未来5-10年工业界广泛承认并接受的将是面向对象式的编程。

2。工业界目前最流行的面向对象编程语言就是C++和Java。所以基本上锁定这两个方向就可以了。而且完全可以同时掌握。

3。掌握Java的精华特性而且一定要知道为什么。比如,Interface和multi-thread。用interface是更好的多继承的模型,而多线程则是设计到语言一级的重要特性。要完全理解interface是为什么,用多线程又有几种常用的编程模型。

4。理解了语言的特性是为什么了之后,就可以试着上升到设计这个层次,毕竟学习语言是要用的。目前比较好的开发模式是采用自定向下的面向对象的设计,加上MVC的模式(你可以看一下我介绍的关于MVC的内容)。首先要找出最顶层的对象(这往往是最难的),然后一层一层往下递归,记住每次应符合7+/-2的原则,因为我们人的短记忆就是这样。一般有图形用户界面的应从界面开始设计。

5。有了基本设计模型后,可以学一些设计模式(Design Pattern)。这是目前证明很有效的。比如体系结构模式(Layering分层,Pipe/Filter管道或过滤器),设计模式(有很多,比如对象池Object Pool、缓冲池Cache等),编程模式(比如Copy-on-Write)。懂了这些模式之后,就会对系统的整体结构有很好的把握,而学术上也有倾向一个系统完全可以由各种模式组合而成。前面提到的MT实际上就有好几种模式,掌握后就不用自己花很多时间去试了。另外一个很重要的领域就是并行和分布式计算领域,大概有20种左右。

6。接下来就不能纸上谈兵了,最好的方法其实是实践。一般教科书上的例子并不能算是实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能是你自己越来越迷糊。我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的,比如在我的实践当中,我曾经学习过一个很经典的例子就是用Java实现的HotDraw(源自SmallTalk),你可以用rolemodel或hotdraw在搜索引擎上找一下,我记不大清楚了。好象rolemodel.com是个网站,上面有原代码和一些基本设计的文档。另一个来源可以到www.umlchina.com是个不错的文档基地。从HotDraw上我学到了什么是Framework,以及如何用rolemodel的方式来构造,这样我就可以应用到其他的地方。顺便说一句,这个例子你绝对不会觉得小,只会觉得大,并且他还是真正的商用的Framework。

7。结合前面学到的设计模式你就可以很好的理解这些经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。

8。好象以上谈的跟Java没什么关系,其实我们早就应该从单纯的学习语言到真正的学习好编程的领域。学习技术是没有止境的,你学习第一种语言可能要半年时间,以后每种语言都不应该超过两个月,否则你会觉得学习语言是包袱,是痛苦。

9。学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。

没有第10点了,因为没有东西是十全十美的,哈哈~~。

Happy Programming!

时间: 2024-08-02 16:32:11

转-如何学习java的相关文章

java-关于学习Java的电脑配置

问题描述 关于学习Java的电脑配置 网上看到一款组装的笔记本,配置如下:CPU英特尔赛扬J1800,内存4G,硬盘320G,不知用来学习java,以及数据库等行不行.请各位大神不吝赐教 解决方案 开个玩笑,如果影响你编程最大的因素是总是控制不住自己想玩游戏,那么买个老一点的电脑恐怕更好--电脑慢得都看不成电影也玩不了游戏了,学习编程还绰绰有余. 事实上,只要开机能进系统的计算机,都可以用来学习编程.当年我刚上大学学习编程的计算机不过是Intel Celeron 266MHz(0.266GHz,

小议学习java的浮躁心态-引出篇

"切忌浮躁"--我想这是在任何学习方法中,都会特意提出来的. 在国内的几个论坛也混了几年,甚至眼看着曾经轰轰烈烈的javaunion从成长到消失.在javaunion ,chinajavaworld,dev2dev,javaresearch,cn-java等论坛上,也相遇或结识了很多java爱好者,有经验丰富者,也有初出茅庐者. 其实,国内技术论坛,是个很奇怪很有意思的地方.从这里成长了一批批的开发者,但也从这里消失了一批批的开发者.犹记得javaunion论坛曾经的一篇名为"

小议学习java的浮躁心态-分析篇

  知识是需要沉淀的:思想也是在不断的学习.磨练中走向成熟的:而技术也是在不断的创造中开拓的. 在<引出篇>中,我简单的举了一个身边的例子,以及夸张的描述了一个浮躁学习的状态.这些只简单的点出了浮躁心态的表象,那么现在让我们来分析一些根源. 在<引出篇>的议论中,有朋友提到"软件业的浮躁"一词,也建议在"分析篇"中从这方面分析一下.有关"软件业"之类的议论,在各大论坛或网站上比比皆是,有抱有积极心态的,有唉声叹气的,有发牢

学习java的一些好的书籍介绍

学习一门新的知识,不可能指望只看一本,或者两本书就能够完全掌握.需要有一个循序渐进的阅读过程.我推荐Oreilly出版的Java系列书籍.     在这里我只想补充一点看法,很多人学习Java是从<Thinking in Java>这本书入手的,但是我认为这本书是不适合初学者的.我认为正确的使用这本书的方法应该是作为辅助的读物.<Thinking in Java>并不是在完整的介绍Java的整个体系,而是一种跳跃式的写作方法,是一种类似tips的方法来对Java很多知识点进行了深入

java日记:学习java一年体会1

2005年3月24日         晴          于 北京交通大学16号宿舍楼 现在读大二下学期了,从大一下学期开始学习java,旁听java课程,到现在正式地上了必修的课程,一年多以来,感觉上对J2SE大概有了一个理解.不敢说钻研得很深刻,但是也能解决许多问题了. 一年来,在学习的过程中,遇到了许多问题和困难,解决问题之余也渐渐积累了不少经验.现在,同学之间讨论或者许多询问的问题中,我觉得许多都非常有代表性.从初学者的角度看,我觉得我可以提供一些经验,使现在的初学者可以少走一些弯路,

学习java语言思想 了解java语言优势

虽然Java技术是那么的诱人,前景也似乎非常光明,但是不是已经有了C.C++等广泛应用并且大获成功的语言了吗?微软不是又在大力推广他们的.Net技术吗?LISP.Prolog等人工智能语言在北美洲.欧洲的金融领域不是也有很大的应用吗?学习Java编程,是不是一个明智的选择呢? 带着这些问题,让我们来看看Java的优势. 1.免费! Sun免费提供用来开发Java应用程序的一切,你不必付任何的版税.或许你会将信将疑:资本家搞共产了?实际上,Sun在Java上的收益确实不大,远远比不过垄断Java应

新手入门:学习Java的一点经验心得

心得 在Java私塾的学习快完成了,突然想把自己的学习心得总结一下. 我觉得在JAVA的初期阶段尽量少用工具,像eclipse,JBuild这些工具可以晚一点在用, 最开始有个写字板和JDK就可以了,我觉得在开始阶段主要是为了打下扎实的基础,不然有时工具很多都帮你生成了, 也是为了培养一种好的编程习惯,最初的时候还是自己多动动手好了,毕竟没有学会走路跑步肯定快不了. 学习JAVA一定要先把JAVA的几个基本组成元素学好. 1.数据类型: JAVA是一种强类型语言,各种类型不会自动转换,使用前必须

学习JAVA的笔记(一)

笔记 因为学校开JAVA课程的原因,让我接触到了JAVA.然后跑到网上用GOOGLE搜索了一下JAVA,得到很多消息.进去看看,弄的一头雾水,什么是API,什么是面向对象............(嘿嘿,偶什么基础都没有,是不是很卤莽啊.)马上把教材翻出来看看,到SKYCN下了个JDK.安装-配置环境-运行伟大的"HelloWorld".安装很简单,配置就让我头疼了,还是GOOGLE,找到资料,原来是这样:系统变量->新建->变量名:JAVA_HOME 变量值:c:\j2sd

学习JAVA语言过程中可能遇到的共同问题

这节教程将讨论一些在学习JAVA语言过程中可能遇到的共同问题. 问题一:编译器找不到类. 解决方法: 确保你已经导入了类或者它的包. 如果对CLASSPATH环境变量有进行设置,要重新复位. 确保类名的拼写跟定义的一样,要注意大小写问题. 如果类在包中,要确保它们处在正确的子目录中. 同时,一些程序员从.java文件名字为类使用不同的名字.要确保你是使用类名字而不是文件名.实际上,使类名和文件名相同就不会出现这个错误了. 问题二:注释器不能找到其中一个类 解决方法: 确保你指定的是类名而不是类的