查看原文
其他

我用了 6 年,告诉你怎么学好 Java

鱼皮 程序员鱼皮 2022-09-12

大家好,我是鮍。

Java 是我用的最多的编程语言,之前也给大家分享过 Java 学习路线 ,介绍了一名 Java 后端程序员要学的种种技能。

而这篇文章更聚焦于 Java 语言本身,我会给大家分享自己学习 Java  6 年以来的过程、方法和经验,解答如下问题:

  • 如何快速入门?
  • 如何巩固基础?
  • 进阶要学什么?怎么学?

第一阶段 - 入门

我是在大一寒假的时候开始自学 Java,那会儿我还不知道上小破站搜教程,是看了一本书叫《21 天学通 Java》。虽然听名字俗气了点,但当时我觉得这本书写的很好,也确实是 21 天带我入门了哈哈。

不过后面我才发现其实很多知识这本书都没有讲,所以现在更推荐大家看小破站韩顺平老师免费的 Java 课来入门,讲的非常细,会帮你学到更多的内容。

我刚学 Java 的时候就是一边看书一边跟着敲代码(那会儿还是用的 Eclipse 编辑器),还会自己做一点小东西,比如写个无限弹窗的坑人程序发给同学。

入门阶段给大家 2 点建议:

  1. 一定要多写代码。时间允许的话尽量把书中的每行代码都敲一遍。尤其是面向对象编程,你要写代码去理解,而不要去背知识点背代码。
  2. 合理分配时间。先以快速写出代码为目标,而不要过度纠结一些源码。如果你急着找工作,Java 界面开发可跳过 。


通过看书入门 Java 之后,我就立刻去学数据库和开发框架了。

再加上大一下学期学校主要教 C++、我又为了参加比赛自学了 Python、前端什么的,学的很杂,也就没有回过头来复习 Java。

这就导致大二我刚上 Java 课的时候,总感觉老师 PPT 上的很多 Java 知识点熟悉又陌生。

我当时就意识到了一件事:连学校 PPT 上的知识我都忘得差不多了,那我的基础得有多差啊?!

于是,我决定要重点巩固 Java 基础。只是没想到,我一下就坚持巩固了 2 年半。。。

下面分享我巩固基础的 5 种方法

第二阶段 - 巩固基础

第 1 次巩固基础

第 1 次巩固基础就是在大二 Java 课上,我不听课,就在课堂上完完整整地读了一遍《Java 核心技术卷 1》,我个人认为啊这本书很适合巩固基础,最起码给我的帮助是挺大的。

我建议大家看这本书的时候可以跳过界面开发章节,主要是复习面向对象的三大特性、接口、泛型、异常处理、集合类、内置类等知识。

核心技术卷 2 可以不用看

第 2 次巩固基础

看完这本书后我突然产生了一个问题,估计也是很多朋友都有的一个问题,那就是:我的 Java 基础怎么样?

受应试教育的影响,我就想着有没有什么 Java 相关的考试,能检测我的 Java 水平。

于是就搜到了 Oracle 官方的 Java 8 认证,考察的内容正好是 Java 基础。于是我下血本交了 1200 多块钱报了名,搭配某宝 1 块钱买来的复习教材,又巩固了一遍 Java。

官方教程:https://education.oracle.com/java/java-se/product_267

这里我不太推荐大家报这个认证了,证书本身没认可度,纯粹为了激励自己学习的话性价比不高。

结果,我考了不到 90 分(满分 100)。虽然合格了,但还是挺不满意的,毕竟看了几遍书、也写了这么多代码,基础还是不能完全过关。

第 3 次巩固基础

我还是对自己的 Java 基础不自信,于是在大二暑假找实习前,又花时间背了不少 Java 面试题。

像什么 String 为什么不可变、equals 和 == 区别之类的,都比较简单。

功夫不负有心人,还是找到了一份 Java 实习。

实习期间,我每天会在往返公司的路上利用零碎时间在手机上刷几十道 Java 练习题(基本都是选择题),像下面这种:

一个暑假过去了我把题目(接近 1000 道)完整地刷了两遍,就大家现在逛论坛估计还能看到我的 “遗迹”。

第 1 轮刷题时我的正确率才 30% 多,我当时人都麻了,感觉自己之前的书都白看了。不过等我刷第二遍时正确率就能到 90% 了,能明显感受到进步,说明刷题还是有用的。

第 4 次巩固基础

光做选择题还远远不够,因为我发现只要几天不写 Java,很多语法就会忘。

所以从大二暑假开始,我每天都用 Java 刷 2 - 3 道算法题目、用 Java 做项目、用 Java 实现设计模式等等。

总之就是每天都会写 Java,一直坚持到我大三暑假找工作。基本上就把 Java 的集合类、各种内置类的方法、Java 8、类库什么的用的很熟练了。

第 5 次巩固基础

再后来最后一次巩固基础应该就是大三暑假准备秋招时会背一些面试题。

有了之前的积累,Java 语言相关的面试题我背的飞快,也可以把更多的时间用到复习框架、数据库、缓存、分布式这些知识上。

从我自己面试大厂的经历来看,除了阿里比较喜欢考 Java 基础和底层之外(毕竟 Java 主场),其他公司基本没怎么考察 Java 基础知识,更多的是问数据库、中间件、计算机基础、业务场景设计等独立于编程语言的问题。



以上就是我巩固基础的方法,虽然花费了很多的时间,但很值得。

这里也给大家 2 个建议:

  • 如果你急着找工作,那么先把开发框架、常用技术都学了,能做出一个完整地项目了。再用我上面的方法来巩固基础性价比会更高。
  • 注重日常积累。巩固基础是一个过程,你要养成每日阅读 / 做题的习惯。你像我坚持练习了 2 年半对吧,而不是说我这段时间停下来不学新技术了,光刷题 + 复习,感觉也很会挺枯燥的。

第三阶段 - Java 进阶

我是在大三上学期学完微服务后,才正式进入 Java 进阶知识的学习,主要是学 5 个方面吧:

1)Java 类库和生态:比如工具库 guava、apache commons,缓存库 jedis、caffine 等,这个需要我们多做项目、多看别人的视频、不断积累。

2)Java 并发编程:了解并发编程思想并能熟练运用 Java 并发包来写代码,我是看《并发编程的艺术》和网上的视频教程学习的。

3)JVM(Java 虚拟机):了解 JVM 内存模型、Java 运行原理、垃圾回收等概念,并且要能分析和调优 Java 程序。

我是读完了《深入理解 JAVA 虚拟机》,非常厚、读起来会有压力,而且很多东西是记不住,感觉性价比不高。所以我建议大家不要硬啃书,可以先看视频学一下 JVM 分析工具的用法,自己多调试,更容易理解。面试前背一下题目,工作后再深入学习也 ok 的。

4)源码阅读:比如 HashMap 源码、ArrayList 源码,网上读文章 + 自己多 Debug 调试就可以。

5)Java 特性:比如反射、探针、动态代理、UnSafe 等,这个在我们学习框架设计原理和源码的过程中会接触到,也可以专门到网上搜文章来学习。

可以看到 Java 进阶知识非常多,也对应了那句话:编程一辈子都学不完!

大家量力而为就好。

工作后

最后时间来到工作之后,其实我的 Java 功力退步了很多

因为公司不像学校,能让你天天带薪自学,更多的还是开发需求;而且工作后我也很少去巩固基础了( 因为不用再去参加面试了 ),是因为通过之前的学习和练习,我的 Java 能力已经能满足实际开发的需要了。所以工作之后,我是把自己学习的重心放在系统设计、其他后端技术的学习上。



最后我想说:大家刚入门 Java 时可能会觉得枯燥,但是可以像我一样多试着做一些小玩意和项目来增加乐趣。希望大家都能把 Java 当成自己的兴趣爱好,在实践中学习。

也希望这篇文章对大家有帮助,期待未来大家都能成为 “Java 之父”。

最后,欢迎学编程的朋友们加入我的 编程知识星球 (点击了解详情),我会给大家力所能及的学习指导和帮助,还可以跟着我的直播做完整项目、跟大家一起学技术。

星球目前已经超过 1 万人了,会在 8 月 21 日晚上涨价 20,并且不再发放 60 元优惠券(之后还想优惠加入的朋友等后续通知)。

星球目前有 2000 多个鱼皮的回答,400 + 精华帖,几十 T 学习资料,30 余场直播分享等

扫下方二维码即可领券加入(3 天内不满意可全额退款):

往期推荐

我用这个技术,干掉几千行 if else!

异步编程的 7 种方式,最后一个是面试加分项

这么写接口,同事都爱跟你合作!

感觉进大厂机会渺茫,要考研续命么?

既然有HTTP,为什么还要有RPC?

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存