- 浏览: 84212 次
- 性别:
- 来自: 北京
(一)
从事软件行业工作已经近7年了,实际Java开发也就是近4年.真正从怎么会用Eclipse开始学起. 问过同事一个对象为什么可以几个类共用 ...到现在4年后的今天,也不敢说Java学的有多好,相反觉得有很多东西要去学习. 只想就我个人的一些心得,给初学者一点可资借鉴的意见吧.
今天先说说学习Java的必备条件,
其一,兴趣. "兴趣是最好的老师",很熟也很俗,但却是事实, 没兴趣根本就不可能学好,写程序是个费脑子的事情,进步的唯一办法就是受挫折,想破脑袋而后豁然开朗才真正有实质的进步. 如果你只想学个Hello Word,那又何必学编程呢?
其二,思想, Java编程思想 使我第一次知道了编程需要思想, 多年过去,我个人体会与其说编程思想,还不如说是解决问题的思想; 所以我想要说的思想就是如何解决问题的想法, 不只是编程的问题. 实际工作中, 太多拙劣的代码其实反映是思想的缺失,经常把简单的问题复杂化,或是找不到问题的关键所在。这些都不是编程的问题,是广义的思想的问题,所以有人说:“编 程时聪明者的游戏”。
其三,追求卓越的精神,无论何时,总是用自己能想到的最好的办法去解决问题,总是试图改进自己以前的想法。程序员是一个职业,是一个谋生的手段,但是要把 这份职业做好,只是向老板交差是不行的,这样对的住老板,但是对不住自己,一段段垃圾代码正象征着你不断地退步,不只是技术,更是思想;不断的追求卓越, 接力想最好的办法。
其四,求根问底的精神。知道这样可以,也要知道为什么这样可以,如果确实没办法搞清楚,记下一个问号,也许某天当你学了更多东西后,突然明白了。拒绝浅尝 辄止,前面已经说了,挫折是进步的唯一最好的途径,略过了挫折也就丢失了更进一步的机会。新来一个兄弟爱抱怨程序看不懂,其原因是程序写的太烂;程序烂不 烂暂且不说,但是程序烂与不烂都不是你看不懂理由;烂点就花点时间,多调试,可以运行的代码都是可以看懂的;我个人觉得从烂程序中受益匪浅,这么烂的我都 看得懂,还怕不烂的吗?搞清楚烂在哪里,并把它改进一下,收获时很大的。
其五,虚心。不要轻易说这个很简单,你这样不对。但是如果你胸有成竹,请勇敢的说出口。虚心的去学习,小心的探索。也许从别人的错误中,你会得到某些顿悟般的启示。
其他,忌好高骛远,忌舍本逐末。
(二)
前面说过学习java的必备条件,或是说学习编程的必备条件,今天就把我个人的学习历程列出来与大家分享。
推荐入门书,Think in java,就是Java编程思想。如果英文好的话,尽量看英文的,因为再怎么厉害的人,由于文化差异,不可能完全能表达作者的那个“味”。就“面向对象” 这个概率来说,英文其实很好理解,可这中文翻译却很让人糊涂,而且你还真找不到更好的翻译办法。所以看英文书,最好看原版,能很好的体会作者的意境。有人 说这本书入门太难,我不这么认为,相反它只是把每个知识点都说得很透彻,不是要人死记硬背,而是从道理上说透,比如为什么入口的main方法要 public,要static.
有书了,我们怎么学习呢?先讲学习内容。
我觉得有其他程序语言基础的,可以把程序结构那章略过,基本数据类型也不要花主要功夫。重要是讲类,接口,重载,覆盖,异常,Collection的那几章,然后是线程,内部类这部分可以等有一定基础了再看也行,开始你可能根本不知道为什么要用它,所以也不会用。还有就是IO, 我觉得到不用花很多时间,大致先了解就好了。
就学习方法而言,书上的例子是要看的,而且要亲自敲到电脑上调试下,光看书只能是半生不熟,似懂非懂的。有问题随时用笔记下来,并在以后的学习中试图找到答案。
学习的过程中,不要去学习什么流行的框架怎么用,如struts,spring等,先学好基础再说,不要好高骛远。然后可以自己想个小玩意做做,练练手。 比如双机的聊天工具,扩张成客户端服务器模式啦。个人觉得不要急于上手Web程序,它可能会让你忽略了基础的学习与掌握,甚至写程序的兴趣。
等自觉学的差不多了,再把书从头过一遍,以前理解的也许有更多感悟,以前不懂的,说不定已经搞清楚了。书读百遍,其意自现。
有空到论坛上别人都什么问题,试图解决下。碰到问题google下,不要轻易发问,先试图自己想办法解决问题。
以上是我个人一点感受,错误之处敬请批评指正。另外Think in java目前最新的是第四版,在网上可以找到pdf格式的电子版。各位如果需要请留下电子邮箱。
(三)
副标题, 积极主动地学习。 刚开始工作那年,公司培训说“吃亏就是占便宜”,“比顾客要求的做的更好”,当时觉得纯属愚人思想。但这两句话确实对我影响深远,因为这两句“愚人”的言论,我收获了很多。 为什么要吃亏呢?老板给多少钱我就做多少事!似乎很有道理,但是在同样的时间内你做了较差的事情,就是在浪费自己的时间。同样是8个小时,我为老板把事情做到最好,老板确实为此获得了好处,但是你自己也充分利用了自己的时间。所以我说“做事就要做好,跟别人给你多少钱没有关系;觉得钱少不值得,就直接不要做;既然做就要尽心。”可能还有人不同意,说我可以节约出上班时间尽心作自己的事情,不也是进步了吗?这其实有两个误区,第一,违法纪律的事情不要做,就算做估计也有点提心吊胆,要防着领导冷不防站在你背后,试想这样的紧张状态下,你能很好的发挥自己吗?第二,自己的项目由于没有任何实质的压力,或说没有被检验的压力,往往多缺斤少两,或是进展缓慢,不具备很好的持续性。所以请用公司的项目练手就很好,不要怕谁占了你便宜;说不定领导看你做的好,还奖你点钱,也算是意外之财。
说个我自己的事情,由于本人学历不高,也不是什么名校毕业,一个让公司为难的意外我做的个组长。然后在相当一段长时间内,一个做事情比我少,责任比我 轻,代码质量比我差很多的下属工资比我高。几年过去了,我也一直位置上努力着,学习着,终于超越了他一点点。这里我并不是想说我不争待遇,多么假清高,因 为我一直都在学习,既然钱争不到,就争点能力吧,能力总是永远用得上的,还好最后待遇终于有了点小小进步。
为什么要比顾客要求的做的更好?谁是顾客?“下一站就是顾客。”所以顾客是你的邮件接受者,是你的上司,也是你的下属,还有QA的同志们,一切跟你有关联 的人其实都是你的顾客。我想说还有一个顾客,这个顾客就是你自己,不断地做超出你预期的事情,不断地超越昨天的自我;多研究下开源项目的代码,注意我说的 是看源码,不是学怎么配置使用;这个过程有时候很痛苦,看不懂啊,但是一旦看懂了,你领悟的别人编程的思想,解决问题的思路,在你今后的工作你也会不经意 的用上,而且你看到很好的代码,就会反感自己曾经认为很好现在看来是垃圾的代码。你看的源码越多,看更多其他的代码越简单,因为好的程序员总是对好的代码 有比较一致的看法,所以他们解决特定问题都趋向于某总同样的模式,就是所谓的设计模式。所以不仅要通过严格要求自己及,还要多多通过学习别人的经验来丰富 自己。
最后该篇以那句总被忘记、却在失败检讨中容易想起的名言作结。“书山有路勤为径,学海无涯苦作舟。”
(拾遗)
学习最大的天敌就是忘记,所以我想把我这几年的学习的东西,一点一点拾起来,算是复习,主要是对Java基础知识再回首,包括常用设计模式再内。具体计划大致如下: 第一阶段,以Thinking in java作为复习教材,一章一章的过,包括部分原文转载,然后翻译,写下自己的心得。 第二阶段,找一个自己完全全新开源项目,进行源代码分析学习,一步一步写下学习笔记,也同时跟大伙交流心得。具体项目现在还没想,不能太大的,也不能太微小的,找个比较流行的吧。 这个过程可能历时会比较长,也不知道是否能坚持下来。无论如何,一步一步来吧。
从事软件行业工作已经近7年了,实际Java开发也就是近4年.真正从怎么会用Eclipse开始学起. 问过同事一个对象为什么可以几个类共用 ...到现在4年后的今天,也不敢说Java学的有多好,相反觉得有很多东西要去学习. 只想就我个人的一些心得,给初学者一点可资借鉴的意见吧.
今天先说说学习Java的必备条件,
其一,兴趣. "兴趣是最好的老师",很熟也很俗,但却是事实, 没兴趣根本就不可能学好,写程序是个费脑子的事情,进步的唯一办法就是受挫折,想破脑袋而后豁然开朗才真正有实质的进步. 如果你只想学个Hello Word,那又何必学编程呢?
其二,思想, Java编程思想 使我第一次知道了编程需要思想, 多年过去,我个人体会与其说编程思想,还不如说是解决问题的思想; 所以我想要说的思想就是如何解决问题的想法, 不只是编程的问题. 实际工作中, 太多拙劣的代码其实反映是思想的缺失,经常把简单的问题复杂化,或是找不到问题的关键所在。这些都不是编程的问题,是广义的思想的问题,所以有人说:“编 程时聪明者的游戏”。
其三,追求卓越的精神,无论何时,总是用自己能想到的最好的办法去解决问题,总是试图改进自己以前的想法。程序员是一个职业,是一个谋生的手段,但是要把 这份职业做好,只是向老板交差是不行的,这样对的住老板,但是对不住自己,一段段垃圾代码正象征着你不断地退步,不只是技术,更是思想;不断的追求卓越, 接力想最好的办法。
其四,求根问底的精神。知道这样可以,也要知道为什么这样可以,如果确实没办法搞清楚,记下一个问号,也许某天当你学了更多东西后,突然明白了。拒绝浅尝 辄止,前面已经说了,挫折是进步的唯一最好的途径,略过了挫折也就丢失了更进一步的机会。新来一个兄弟爱抱怨程序看不懂,其原因是程序写的太烂;程序烂不 烂暂且不说,但是程序烂与不烂都不是你看不懂理由;烂点就花点时间,多调试,可以运行的代码都是可以看懂的;我个人觉得从烂程序中受益匪浅,这么烂的我都 看得懂,还怕不烂的吗?搞清楚烂在哪里,并把它改进一下,收获时很大的。
其五,虚心。不要轻易说这个很简单,你这样不对。但是如果你胸有成竹,请勇敢的说出口。虚心的去学习,小心的探索。也许从别人的错误中,你会得到某些顿悟般的启示。
其他,忌好高骛远,忌舍本逐末。
(二)
前面说过学习java的必备条件,或是说学习编程的必备条件,今天就把我个人的学习历程列出来与大家分享。
推荐入门书,Think in java,就是Java编程思想。如果英文好的话,尽量看英文的,因为再怎么厉害的人,由于文化差异,不可能完全能表达作者的那个“味”。就“面向对象” 这个概率来说,英文其实很好理解,可这中文翻译却很让人糊涂,而且你还真找不到更好的翻译办法。所以看英文书,最好看原版,能很好的体会作者的意境。有人 说这本书入门太难,我不这么认为,相反它只是把每个知识点都说得很透彻,不是要人死记硬背,而是从道理上说透,比如为什么入口的main方法要 public,要static.
有书了,我们怎么学习呢?先讲学习内容。
我觉得有其他程序语言基础的,可以把程序结构那章略过,基本数据类型也不要花主要功夫。重要是讲类,接口,重载,覆盖,异常,Collection的那几章,然后是线程,内部类这部分可以等有一定基础了再看也行,开始你可能根本不知道为什么要用它,所以也不会用。还有就是IO, 我觉得到不用花很多时间,大致先了解就好了。
就学习方法而言,书上的例子是要看的,而且要亲自敲到电脑上调试下,光看书只能是半生不熟,似懂非懂的。有问题随时用笔记下来,并在以后的学习中试图找到答案。
学习的过程中,不要去学习什么流行的框架怎么用,如struts,spring等,先学好基础再说,不要好高骛远。然后可以自己想个小玩意做做,练练手。 比如双机的聊天工具,扩张成客户端服务器模式啦。个人觉得不要急于上手Web程序,它可能会让你忽略了基础的学习与掌握,甚至写程序的兴趣。
等自觉学的差不多了,再把书从头过一遍,以前理解的也许有更多感悟,以前不懂的,说不定已经搞清楚了。书读百遍,其意自现。
有空到论坛上别人都什么问题,试图解决下。碰到问题google下,不要轻易发问,先试图自己想办法解决问题。
以上是我个人一点感受,错误之处敬请批评指正。另外Think in java目前最新的是第四版,在网上可以找到pdf格式的电子版。各位如果需要请留下电子邮箱。
(三)
副标题, 积极主动地学习。 刚开始工作那年,公司培训说“吃亏就是占便宜”,“比顾客要求的做的更好”,当时觉得纯属愚人思想。但这两句话确实对我影响深远,因为这两句“愚人”的言论,我收获了很多。 为什么要吃亏呢?老板给多少钱我就做多少事!似乎很有道理,但是在同样的时间内你做了较差的事情,就是在浪费自己的时间。同样是8个小时,我为老板把事情做到最好,老板确实为此获得了好处,但是你自己也充分利用了自己的时间。所以我说“做事就要做好,跟别人给你多少钱没有关系;觉得钱少不值得,就直接不要做;既然做就要尽心。”可能还有人不同意,说我可以节约出上班时间尽心作自己的事情,不也是进步了吗?这其实有两个误区,第一,违法纪律的事情不要做,就算做估计也有点提心吊胆,要防着领导冷不防站在你背后,试想这样的紧张状态下,你能很好的发挥自己吗?第二,自己的项目由于没有任何实质的压力,或说没有被检验的压力,往往多缺斤少两,或是进展缓慢,不具备很好的持续性。所以请用公司的项目练手就很好,不要怕谁占了你便宜;说不定领导看你做的好,还奖你点钱,也算是意外之财。
说个我自己的事情,由于本人学历不高,也不是什么名校毕业,一个让公司为难的意外我做的个组长。然后在相当一段长时间内,一个做事情比我少,责任比我 轻,代码质量比我差很多的下属工资比我高。几年过去了,我也一直位置上努力着,学习着,终于超越了他一点点。这里我并不是想说我不争待遇,多么假清高,因 为我一直都在学习,既然钱争不到,就争点能力吧,能力总是永远用得上的,还好最后待遇终于有了点小小进步。
为什么要比顾客要求的做的更好?谁是顾客?“下一站就是顾客。”所以顾客是你的邮件接受者,是你的上司,也是你的下属,还有QA的同志们,一切跟你有关联 的人其实都是你的顾客。我想说还有一个顾客,这个顾客就是你自己,不断地做超出你预期的事情,不断地超越昨天的自我;多研究下开源项目的代码,注意我说的 是看源码,不是学怎么配置使用;这个过程有时候很痛苦,看不懂啊,但是一旦看懂了,你领悟的别人编程的思想,解决问题的思路,在你今后的工作你也会不经意 的用上,而且你看到很好的代码,就会反感自己曾经认为很好现在看来是垃圾的代码。你看的源码越多,看更多其他的代码越简单,因为好的程序员总是对好的代码 有比较一致的看法,所以他们解决特定问题都趋向于某总同样的模式,就是所谓的设计模式。所以不仅要通过严格要求自己及,还要多多通过学习别人的经验来丰富 自己。
最后该篇以那句总被忘记、却在失败检讨中容易想起的名言作结。“书山有路勤为径,学海无涯苦作舟。”
(拾遗)
学习最大的天敌就是忘记,所以我想把我这几年的学习的东西,一点一点拾起来,算是复习,主要是对Java基础知识再回首,包括常用设计模式再内。具体计划大致如下: 第一阶段,以Thinking in java作为复习教材,一章一章的过,包括部分原文转载,然后翻译,写下自己的心得。 第二阶段,找一个自己完全全新开源项目,进行源代码分析学习,一步一步写下学习笔记,也同时跟大伙交流心得。具体项目现在还没想,不能太大的,也不能太微小的,找个比较流行的吧。 这个过程可能历时会比较长,也不知道是否能坚持下来。无论如何,一步一步来吧。
发表评论
-
组合or继承
2013-05-27 11:54 872到底使用组合还是继承是每本讲设计的资料里都要讨论一番的话题 ... -
Java访问控制private之我见
2013-05-24 11:36 821最近待业在家,遂有空重新读了thinking in Java这 ... -
XML 系列教程
2012-05-06 12:50 613http://www.w3school.com.cn/x.as ... -
面向接口编程详解
2012-04-19 21:42 1144面向接口编程详解 2009-04-23 作者:张洋 来源: ... -
浅析java回调机制与观察者模式
2012-04-10 17:23 18731 java回调机制: 首先解 ... -
Java程序设计之-复合优先于继承
2012-04-03 10:33 1494组合 通过创建一个由其他对象组合的对象来获得新功能的重用方法 ... -
java内部类
2012-03-28 16:26 907一、 定义 放在一个类的内部的类我们就叫内部类。 二、 作用 ... -
为什么匿名内部类只能访问其所在方法中的final变量(转)
2012-03-28 15:45 1098(1).所谓“局部内部类”就是在对象的方法成员内部定义的类。而 ... -
Java访问权限修饰符(转)
2012-03-28 11:20 11111、Class类的访问权限: ... -
【java】好书推荐
2012-03-26 15:31 1468Java软件架构师所要需的东西 作为Java程序员来说,最痛 ... -
Java绝对好文,转载的!(转载)
2012-03-25 14:45 824想来学习Java也有两个年头了,永远不敢说多么精通,但也想谈谈 ... -
理解java动态加载机制
2012-03-20 00:01 10411.java动态性 java是一种 ... -
热部署、热加载
2012-03-19 14:14 3699不重启Tomcat有两种方式:热部署、热加载 热部署:容 ... -
Registry of Singleton 模式(转)
2012-03-06 10:01 800考虑使用 Singleton 模式 时拥有子类别的问题,在Si ... -
单例模式(Singleton Pattern)
2012-03-05 20:40 7056.单例模式(Singleton Pattern) 前面说提到 ... -
java.util.concurrent 多线程框架
2012-02-26 16:15 810http://daoger.iteye.com/blog/14 ... -
线程----BlockingQueue (转),java
2012-02-26 13:50 822/** 本例介绍一个 ... -
关于多个线程同时调用单例模式的对象,该对象中方法的局部变量是否会受多个线程的影响
2012-02-12 12:16 2963对于那些会以多线程运行的单例类,例如Web应用中的Servle ... -
Java线程同步机制synchronized关键字的理解
2011-12-25 14:34 791由于同一进程的多个线 ... -
synchronized与static synchronized 的区别
2011-12-24 22:48 6801.synchronized与static synchroni ...
相关推荐
Java学习之路是一个全面而深入的学习旅程,对于任何想要掌握这门强大编程语言的人来说,都是一条必经的道路。Java以其跨平台性、高效稳定性和广泛的应用领域,深受开发者喜爱。以下将详细介绍Java学习的一些关键知识...
Java学习之路是一篇关于如何系统学习Java编程语言的文章,它强调从基础概念开始,逐步深入到更复杂的编程技能。文章为初学者提供了一个学习路线图,从Java语言的基本结构和工具,到面向对象编程,再到异常处理和文件...
Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。...Java学习笔记涵盖了这些核心知识点,通过深入学习和实践,你可以逐步掌握Java编程,并应用于实际项目开发中。
本学习笔记主要涵盖了Java的基础知识,包括面向对象、集合、IO流、多线程、反射与动态代理以及Java 8的新特性等方面,旨在帮助初学者或有经验的开发者巩固和提升Java编程技能。 1. 面向对象(OOP):Java的核心是...
3. **学习与教学**:对于想要深入学习Android底层工作原理的学生或专业人士,这个工具可以帮助他们快速从Smali代码中获取Java层面的信息。 总的来说,"smali2java"工具是Android开发和逆向工程领域的一个重要辅助...
3. **学习和理解**:开发者可以通过查看转换后的代码,更好地理解和学习两种语言的异同。 在压缩包文件"covert"中,可能包含有工具的可执行文件、库文件、文档、示例代码和说明。用户应当按照提供的文档指导进行...
java编写通用进制转化程序,适合java中学习进制转换
Java语言在语音识别领域提供了丰富的库和工具,使得开发者能够轻松地实现语音转文字功能。在你的项目中,你可以利用这些资源来构建一个高效的语音识别系统。以下是对"JAVA语音转文字"这一主题的详细解释。 1. **...
通过查看和学习这个项目,开发者可以更好地理解如何在实际应用中实现Java Excel到HTML的转换。 总之,Java Excel转HTML涉及到了文件读取、数据解析、HTML生成等多个步骤,借助Apache POI或JExcelAPI这样的库,可以...
【JAVA自学之路】这篇资料主要针对想要通过自学进入IT行业,特别是Java开发领域的初学者,提供了选择方向和学习路径的建议。以下是对标题和描述中所述知识点的详细说明: 一、选择学习方向: 1. 不要盲目跟风:强调...
JAVA学习笔记 JAVA学习笔记是面向对象编程语言的学习笔记,涵盖了JAVA的基本概念、面向对象编程思想、类和对象的概念、实例变量和局部变量的区别、方法的定义和调用、类型转换、精度问题、移位问题、switch语句的...
这份《java学习》笔记包含了多个核心主题,旨在帮助初学者和有经验的开发者深入理解和掌握Java技术。 1. **正则表达式(正则.md)**: 正则表达式在Java中用于文本匹配和搜索,是处理字符串的强大工具。Java提供了...
【Java学习日记3】 在Java学习的初期,我们首先要了解Java的基本特性,它是一种跨平台的语言,这得益于Java虚拟机(JVM)。JVM使得Java程序可以在任何支持JVM的操作系统上运行,如Windows、Linux或Mac OS。JVM有多...
### Java学习入门资料知识点梳理 #### 一、Java语言历史与发展 - **起源与早期发展** - **前身**:Oak(1990年),由James Gosling等人在Sun Microsystems开发。 - **Green项目**:Sun Microsystems于1990年开始...
### Java学习文档知识点详解 #### 一、Java环境配置 在开始Java学习之前,环境配置是不可或缺的一步。环境配置主要分为以下几个步骤: 1. **JDK环境配置**: - 设置`JAVA_HOME`环境变量,指向JDK安装目录。这个...
【Java学习笔记Markdown版】是针对Java初学者和进阶者的一份详尽教程,以Markdown格式编写,便于阅读和整理。Markdown是一种轻量级的标记语言,它允许用户使用易读易写的纯文本格式编写文档,然后转换成结构化的HTML...
在这种情况下,"CLASS转JAVA"工具就派上了用场。这个工具专门用于将Java字节码(.class文件)转换回可读的源代码格式(.java文件),帮助开发者分析或调试已部署的程序。 1. **Java编译过程**: Java源代码(.java...
标题中的"C++转Java工具"指的是一个程序,它能够帮助开发者将C++编写的代码转换为Java语言。...对于需要在Java环境中利用C++代码的开发者,或者想要深入学习和实践JNI的人来说,这是一个非常有价值的资源。
"java行转列"这个主题是数据处理中的一个常见需求,尤其是在数据分析、报表生成或数据显示时。当我们从数据库中获取数据,有时会遇到单个字段的数据需要在用户界面上以列的形式展示,这时就需要进行数据的行列转换。...
《Java入门1·2·3:一个老鸟的Java学习心得》是一本与众不同的Java入门好书。作者以独特的视角,向Java初学者讲述了如何才能真正理解和掌握Java语言。《Java入门1·2·3:一个老鸟的Java学习心得》充分考虑了初学Java...