看到一篇感觉很好的JAVA学习指南文章,故此收藏。
 本来想放一个原文链接,但是网上太多转载的,很多都标注为原创,写的转载的转载链接也不知道是不是真的原创,下面讲到了作者的另一篇博文,简单搜了下那篇文章,作者没放这篇文章,不知道是不是真的,就不放链接了。根据下面另一篇文章来看,作者应该是把文章都放在微信公众号里的。
 回头看看,我进入Java领域已经快15个年头了, 虽然学的也一般, 但是分享下我的心得,估计也能帮大家少走点弯路。

[入门]

我在2001年之前是C/C++阵营,有C和面向对象的基础, 后来转到Java ,发现没有指针的Java真是好简单,另外Java的类库好用的让人哭啊。后来我就看《Thinking in Java》 ,《 Java 核心技术 》, 感觉也不吃力。

如果我之前没学过别的语言,或者半路出家转到计算机行业,我不会先看上面那两本,相反我会选《Head First Java》, 这本书非常适合零基础的小白,读起来轻松搞笑,不信你看看第一页:

但是光看书也挺无趣的,不妨和视频结合着看, 我觉得传智播客的Java基础视频很不错 (唉, 给传智打了个广告), 网上一搜就有, 真搜不到找我吧(QQ 14703250)。

注意:视频的好处就是能看到敲代码的过程,代码是活的,这点很爽。 如果视频只是按PPT讲编程,果断扔掉。

书也有书的好处,能写成书的,肯定是作者经过系统化思考,梳理才能形成的东西,所以系统性比较强。书还有其他优点,例如可以随便的翻,找到重点反复的看。所以混合着看经典书+优秀的视频应该是最好的入门。

Java 入门,我不会去上培训班,白白浪费钱 ,自学就够了。自学过程中如果有实战经验丰富的高人指导一下,给我绘出路线图,指出攀登的方向,哪些地方有陷阱,哪些地方不应该浪费时间,我的自学就可以减少摸索,少走弯路,很不幸,我当年没有遇到,如果时光倒流,我会想办法找一个来指导我。

[实践]

软件行业的一大特点就是光看不做永远都学不会,编码不到10万行都不好意思出去打招呼。所以实践,实践,实践!

在校期间,我还是会尽可能的去找项目做(参见我的另一篇文章《从现在开始丰富你的简历》,回复“简历”查看),实在没找到,也可以先把基础打好。

我上大学的时候用的是严蔚敏的《数据结构》,当时我也把习题都做了一遍,考高级程序员的时候,成绩非常好。

后来我知道了一本更好的算法入门书《算法》,如果时光能够重来,我还是会这本书上提到的所有数据结构和算法用Java 都实现一遍,课后作业也争取都做一遍。 这是个非常重要的训练,因为我知道,真的做了,就会发现工作以后只要不是设计算法,基本的数据结构没有能难住我的。

【Java SE】

对于Java集合框架,不但要学会用,我还会尝试着实现一遍,List, ArrayList, Set ,HashSet, Map ,HashSet 等等, 要是不知道怎么写,看看JDK的源码就可以了,那里有最好的老师。实现一遍能更好的明白面向对象的设计,接口,抽象类,具体类的关系,怎么分离职责,会学习到设计模式中的模板方法,Iterator等 。

值得一提的是Iterator,很有趣,我还清楚的记得那一年自己实现集合框架中 Iterator 的时候的激动心情啊 :-)

在实现Java 集合框架的时候,可以顺便把泛型也学了,不学不行,要不然实现不了啊。

Java 世界里,万事万物都是对象,大家都知道封装,继承,多态,但是仅仅了解这些只是入了门,不可能做出真正的面向对象的程序。

有一本经典的书《敏捷软件开发, 原则,模式,实践》,里边详细的讲解了一个薪水支付案例,是迄今为止最好的面向对象设计的例子。我会用Java把它实现一遍,真正的体会一下OOD, 了解怎么才能把合适的责任分给合适的类, 什么叫面向接口而不是面向实现编程, 什么是优先使用组合而不是继承。

对于Java线程, 重点还是理解概念,因为我知道在以后的工作中(除非从事系统级编程),自己写线程/线程池的机会是非常罕见的,都被类库,框架给封装好了。所以重点是理解,看书的话就当然是《Java并发编程实战》,一大群大牛写的啊。

对于Java IO, 我觉得架构设计的很优雅,典型的学院派,可就是不太实用,打开读取一个文件都得用装饰者模式包装来包装去,太累了。

项目实战中呢,也就是读取个property 文件,xml 文件。我还是重点去理解概念和设计吧。 不过自己写个简单的xml解析器倒是不错。

至于 AWT, Swing , 简单看看就行了,我不会去深入研究,Java 是典型的服务器端的语言,开发客户端程序的极少,你想想,你用Swing/AWT搞个桌面程序出来,还得让客户装个JRE才能运行,是不是有点过分?据我所知,也就是银行的一些应用在用Swing ,AWT了。有人可能说 Applet,它曾经流行过,现在早都没人用了。所以我不会在Swing和AWT上浪费时间。

Java Reflection 看起来没有集合框架,线程,OO等那么耀眼,但它可是很多框架(SSH) 的基础啊(回复“反射”查看相关文章),先把基础学会,后面的JavaEE得用到它。

想真正地学好Java ,不了解Java 虚拟机怎么可能?《深入理解Java 虚拟机》一定得看,看完的目标就是写个简单的Java 反编译器。

【做个有素养的Java码农】

我记得08的时候, 我的IBM经理说设计模式是必备技能, 不懂设计模式的我们不能要了。

所以设计模式是必学, 其实Java里边用的非常多,简直就是设计模式的活教材, 工厂方法,单例,模板方法, 装饰者,责任链都有体现。

当然我会去先看一下轻松的《Head First Design》, 《设计模式》的作者之一 Eric Gamma 都大力推荐,绝对不容错过。

又过了几年, 我的IBM经理又说,现在我们默认设计模式大家都会了, 敏捷实践是必备技能 !

所以, JUnit 我得会, 重构我得会, TDD,持续集成这些最最基本的敏捷实践也得知道, 要不然会被人鄙视啊。

作为一个有追求的Java码农, 我写代码的时候要遵循Java 的编码规范,例如类名首字母大写, 报名要小写, 方法名要首字母小写...等等。

作为代码洁癖, 我受不了脏代码, 我会不断的打磨自己的代码,直到它像一个工艺品。

Java 的最佳实践 《effective java》 怎么能错过?  里边满满的全是JDK的作者们总结出来的java 编程最佳用法。不过翻译的实在是不咋滴,很多句子都得仔细的琢磨一下才知道什么意思,所以我打算录一系列视频讲解一下,敬请期待。

假如时光倒流, 我会这么学习Java相关推荐

  1. 假如时光倒流,我会这么学习Java 1

    回头看看, 我进入Java 领域已经快15个年头了, 虽然学的也一般, 但是分享下我的心得,估计也能帮大家少走点弯路. [入门] 我在2001年之前是C/C++阵营, 有C和面向对象的基础, 后来转到 ...

  2. 2021考研 | 假如时光倒流一年,我会如何调整复习

    2021考研 | 假如时光倒流一年,我会如何调整复习 考研数学 计算量很大,时间上来不及,概统最后一个大题因为时间仓促,算错一个很简单的定积分,最后一个填空题因为考虑不充分,直接送走5分,补上这5分才 ...

  3. 你知道怎么样学习java吗?

    在慕课网上的原文.原文地址:http://www.imooc.com/article/9257 Java是个平台,我只想说说我对学好Java的一点看法,希望对初学者有所帮助. 1.1 思考一下 学习J ...

  4. 学习java周期_Java第一作业周期总结

    1.作业总结 自java开课,我们已经进行了三次作业的练习,一步步的从最开始的没有什么特别之处,到运用到java中独有的知识,从简单到复杂,初步了解了Java编程的基本准则.最开始的作业,写完之后,并 ...

  5. 学习Java,容易被你忽略的小细节(2)

    昨天心情真的太糟糕了,写完<学习Java,值得注意你注意的问题(1)>之后,迎来些许的支持以后就是一片片的谴责.我的主页上涌现出许许多多Java方面的牛人,谴责我水平太低,写的问题太初级. ...

  6. java判断时间是否在时间段内_具有C语言基础,利用半年时间学习Java是否够用

    首先,对于具有一定C语言基础的同学来说,利用半年的时间来学习Java会有一个比较系统的学习过程,通常也能够达到实习程序员,或者是助理程序员的水平,然后在技术团队中实践一段时间之后,从事专业开发岗位应该 ...

  7. 如何快速学习Java? 1

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! [CSDN编者按]在各大编程语言学习榜单上,Java的入门难度不言而喻.除了要科学选择一门适 ...

  8. 为什么都建议学java而不是python-为什么java比python复杂,还是有很多人选择学习java?...

    这是一个非常好的问题,也是很多初学编程的人比较关心的问题之一,作为一名IT从业者,同时也是一名教育工作者,我来回答一下. 首先,当前Java和Python都是流行程度比较高的编程语言,而且二者都同为全 ...

  9. 学习Java时,要记住的知识点太多,记不住怎么办?

    "今天学习,忘记明天",我相信这是每个学习者都会遇到的问题. 我们分析一下原因,逐一解释,然后给出解决方案,最后分享一下学习java的有效方法和途径: 记不住的可能原因 第一个:知 ...

  10. 学习 Java 的历程和体会『写给新手看,欢迎老司机批评和建议』

    转载出处:https://blog.csdn.net/lw_power/article/details/52502698#commentBox Java 基础只能说熟悉,还达不到熟练,更谈不上精通.框 ...

最新文章

  1. xilinx中IP核是灰色的 license为带美元的小锁
  2. SpringBoot--Druid多数据源配置
  3. KClient——kafka消息中间件源码解读
  4. Java 实现 Trie (前缀树)
  5. linux服务器p2v,使用 Linux dd 命令实现 P2V 或 V2V
  6. 赶紧收藏!非常实用的 30 个 Python 技巧
  7. ajax传递复选框的参数,ajax将table复选框的数组值传递到后台
  8. 计算机主板的概念,华硕新型概念主机大爆料:内置未来主板
  9. leetcode971. Flip Binary Tree To Match Preorder Traversal
  10. object-c中NSString与int和float的相互转换
  11. nc 发布元数据_智联科发布新一代连续式NC膜粘膜划膜一体机
  12. iOS 指纹识别常见问题汇总
  13. 《物联网框架ServerSuperIO教程》-19.设备驱动和OPC Client支持mysql、oracle、sqlite、sqlserver的持久化。v3.6.4版本发布...
  14. 【已解决】map container is already initialized——页面切换瓦片图不出来的问题
  15. android手机客户端,【图片】安卓[android]手机客户端版发布【联盟守卫吧】_百度贴吧...
  16. 华为模拟eNSP器交换机简单开具以及基础命令
  17. R语言使用rcauchy函数生成符合柯西分布的随机数、使用plot函数可视化符合柯西分布的随机数(Cauchy distribution)
  18. (排序3)希尔排序时间复杂度与直接选择排序
  19. QuasarRAT-windows下远程控制工具
  20. 几种开源分词工具的比较

热门文章

  1. FSM有限状态机(三段式)-Verilog实现
  2. 2021最新!某盘加速下载工具复活了,无需登录,打开即可高速下载(附下载)!
  3. 无标度网络(scale-free network)
  4. 数据库模糊查询日期字段
  5. 移动端前端开发技术概况
  6. 五矿系30亿项目未经环评私行上马遭环保部叫停
  7. 加权平均法和移动加权法的例题
  8. ryujinx模拟器linux安装教学,怪物猎人崛起 - ryujinx模拟器使用教程搬运,无机党的春天,MHR尝尝鲜 - 踩蘑菇社区...
  9. ROS安装教程(详细)
  10. 萤火虫小程序_线上服务不断档 萤火虫水洞·地下大峡谷推出“云旅游”新体验...