【强烈推荐】可能是最适合你的 Java 学习路线和方法

如遇链接无法打开,建议使用 https://github.com/Snailclimb/JavaGuide/blob/master/docs/questions/java-learning-path-and-methods.md 这个链接进行阅读。

到目前为止,我觉得不管是在公众号后台、知乎还是微信上面我被问的做多的就是:“大佬,有没有 Java 学习路线和方法”(大佬属现代流行的客气称呼,本人非大佬哈)。所以,这部分单独就自己的学习经历来说点自己的看法。

前言

大一的时候,我仅仅接触过 C 语言,对 C 语言的掌握程度仅仅是可以完成老师布置的课后习题。那时候我的主要的精力都放在了参加各种课外活动,跟着一个很不错的社团尝试了很多我之前从未尝试过的事情:露营、户外烧烤、公交车演讲、环跑古城墙、徒步旅行、异地求生、圣诞节卖苹果等等。

到了大二我才接触到 HTML、CSS、JS、Java、Linux、PHP 这些名词。最开始接触 Java 的时候因为工作的需要我选择的安卓方向,我自己是在学习了大概 3 个月的安卓方向的知识后才转向 Java 后台方向的。最开始自己学习的时候,走了一些弯路,但是总体路线相对来说还是没问题的。我读的第一本 Java Web 方向的书籍是《Java Web 整合开发王者归来》,这本书我现在已经不推荐别人看了,一是内容太冗杂,二是年代比较久远导致很多东西在现在都不适用了。

很多人在学完 Java 基础之后,不知道后面该如何进行下一步地进行学习,或者不知道如何去学习。如何系统地学习 Java 一直是困扰着很多新手或者期待在 Java 方向进阶的小伙伴的一个问题。我也在知乎上回答了好几个类似的问题,我觉得既然很多人都需要这方面的指导,那我就写一篇自己对于如何系统学习 Java 后端的看法。刚好关注公众号的很多朋友都是学 Java 不太久的,希望这篇文章对学习 Java 的朋友能有一点启示作用。

由于我个人能力有限,下面的学习路线以及方法推荐一定还有很多欠缺的地方。欢迎有想法的朋友在评论区说一下自己的看法。本文比较适合刚入门或者想打好 Java 基础的朋友,比较基础。

学习路线以及方法推荐

下面的学习路线以及方法是笔主根据个人学习经历总结改进后得出,我相信照着这条学习路线来你的学习效率会非常高。

学习某个知识点的过程中如果不知道看什么书的话,可以查看这篇文章 :Java 学习必备书籍推荐终极版!。

另外,很重要的一点:建议使用 Intellij IDEA 进行编码,可以单独抽点时间学习 Intellij IDEA 的使用。

下面提到的一些视频,后台回复关键“1”即可获取!

step 1:Java 基础

《Java 核心技术卷 1/2》《Head First Java》 这两本书在我看来都是入门 Java 的很不错的书籍 (《Java 核心技术卷 1/2》 知识点更全,我更推荐这本书),我倒是觉得 《Java 编程思想》 有点属于新手劝退书的意思,慎看,建议有点基础后再看。你也可以边看视频边看书学习(黑马、尚硅谷、慕课网的视频都还行)。对于 Java8 新特性的东西,我建议你基础学好之后可以看一下,暂时看不太明白也没关系,后面抽时间再回过头来看。

看完之后,你可以用自己学的东西实现一个简单的 Java 程序,也可以尝试用 Java 解决一些编程问题,以此来将自己学到的东西付诸于实践。

记得多总结!打好基础!把自己重要的东西都记录下来。 API 文档放在自己可以看到的地方,以备自己可以随时查阅。为了能让自己写出更优秀的代码,《Effective Java》《重构》 这两本书没事也可以看看。

学习完之后可以看一下下面这几篇文章,检查一下自己的学习情况:

Java 基础知识回顾

Java 基础知识疑难点/易错点

一些重要的 Java 程序设计题

检测一下自己的掌握情况,这 34 个问题都时 Java 中比较重要的知识点,最重要的是在 Java 后端面试中的出场率非常高。

step 2:多线程的简单使用

多线程这部分内容可能会比较难以理解和上手,前期可以先简单地了解一下基础,到了后面有精力和能力后再回来仔细看。推荐 《Java 并发编程之美》 或者 《实战 Java 高并发程序设计》 这两本书。我目前也在重构一份我之前写的多线程学习指南,后面会更新在公众号里面。

学习完多线程之后可以通过下面这些问题检测自己是否掌握。

Java 多线程知识基础:

什么是线程和进程?

请简要描述线程与进程的关系,区别及优缺点?

说说并发与并行的区别?

为什么要使用多线程呢?

使用多线程可能带来什么问题?

说说线程的生命周期和状态?

什么是上下文切换?

什么是线程死锁?如何避免死锁?

说说 sleep() 方法和 wait() 方法区别和共同点?

为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法?

Java 多线程知识进阶:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwdxwx.html