共计 6314 个字符,预计需要花费 16 分钟才能阅读完成。
前言
无论你是否想自学 Java,认真看完本文,你当前的职场生涯至多少走 1 年弯路。
初衷
在 网上常常有同学私聊我询问“如何自学 Java”、“想转行 Java 靠谱吗”等问题,因为本人也是在大学时自学的 Java,所以我能了解这些同学的苦楚和迷茫。
写这篇文章前,我看了一些网上 Java 自学的文章,很多我都不太称心,有的甚至让我感到愤恨,要么是站在现有的视角娓娓而谈,要么是纯正的瞎编骗小白。
很多文章都有一个老毛病:齐全没有从小白的视角去思考,内容太多,什么微服务、架构、大数据都来了,这基本不是自学阶段该去看的货色,小白看了这些文章,只会越看越懵逼,基本没法下手。
其实我在 18 年写过一篇“0 根底 Java 自学之路”,然而当初来看,过后那篇文章写的过于简略,只是提供了一个思路,然而很多内容没有写。
现在曾经过来了 3 年,我对于这个话题又有了一些新的思考,同时为了援救宽广正处于生灵涂炭的同学们,于是,我决定从新写一篇自学教程。
2021 年 Java 零根底学习路线(超具体)
自我介绍
在写本文前有必要介绍下我本人,让大家更好地去比拟和参考。
我大学是普通本科,大三开始自学的 Java,自学了一年,然而我是计算机专业的,所以有 C 语言根底,然而我这一年的自学走了不少弯路,花了很多工夫学了很多前面基本没用到的货色:Oracle、Hibernate、Struct2、JBPM 等等,还有就是短少有教训的人的领导,所以容易抓不到重点,所以也节约了不少工夫。
不过过后还没有当初这么内卷,所以我在大四秋招刚开始就找到工作了。
行业现状
程序员现状
因为程序员的薪水比拟高,最近几年有很多其余业余的人涌进了程序员行业,减速了这个行业的内卷,然而据某招聘网上的数据统计,程序员以后的需求量还是远高于全行业的平均线的。所以,程序员的现状我感觉是不错的,至多几年内是无需放心的。
Java 现状
最近几年,Go、Python 等语言疾速崛起,大有挑战 Java 位置的趋势,然而 Java 毋庸置疑仍是以后互联网行业里招聘需求量最大的。
泛滥大厂:阿里、美团、快手、拼多多、滴滴、网易等,都是以 Java 为公司的主语言,局部大厂:腾讯、百度、字节等,尽管以其余语言为主语言,然而多多少少也会有一些 Java 岗。
所以,Java 的现状及将来,我感觉都是比拟不错的。岗位多也代表着机会多,对于新人来说比拟敌对,所以我集体是比拟举荐新人学 Java 的。
自学前你应该晓得
自学前请做好心理准备,自学是一个既寂寞又漫长的过程,如果想踏进来,请做好放弃简直所有娱乐生存的筹备,包含过年的时候。如果只是抱着三天打鱼两天晒网的态度,那我倡议还是放弃吧。
然而如果你能保持下来,我置信肯定能有所回报,我本人就是个例子,我走了那么多弯路,跟着本文走,你们没理由比我过后更差。
自学预估周期
自学的周期我给大家定了一个参考工夫:6 个月,均匀每天 6 - 8 小时,共 1200 个小时左右,大抵安顿:
1、3 个月基础知识学习和强化。
2、2 个月 SSM 我的项目实战重复练习,我的项目实战同时也在温习和坚固之前的基础知识。
3、1 个月面试高频题筹备,看面试题其实也会减少本人的专业知识,而且可能比你设想的要多,不夸大地说,前几年我从面试题里学到的常识可能比工作里取得的还多。
自学教程获取
授人以鱼不如授人以渔,一个简略又靠谱的的教程获取形式:B 站搜寻关键字 + 教程,例如:Java 零基础教程视频、JDBC 教程、MySQL 基础教程、JavaWeb 视频教程、SSM 整合教程、Java 我的项目实战等等,而后按“最多点击”排序,在前几个里寻找一个适合的即可,个别点击高的都是品质还能够的。或者到这个建设了 5 年的 Java 学习交换 QQ 群:634930465。
有不懂的问题能够随时在外面问,须要 Java 各个阶段的学习材料也能够在外面进行下载。对于前端和 Python 的问题也能够问,我都懂。
很重要的倡议
1、爱因斯坦的胜利公式:胜利 = 效率 * 工夫,自学也一样,须要劳逸结合,不要搞得太累,否则效率降落,花再多工夫也没用。
2、自学是一个漫长的过程,循序渐进、放弃急躁,如果能够,找个伴一起学习,相互激励,相互交换,能够让本人更有能源坚持下去。
3、将本人的学习过程记录下来,当你发现累计得越来越多的时候,心里会有一种小成就感,这会进步你学习的能源。
4、专一于重点常识的学习,本文介绍的根本涵盖了以后你应该学习的内容,没有提到的大部分是没那么重要的,如果你无奈判断是否重要,能够在本文上面留言,我会一一解答,至于像一些什么:k8s、hadoop、hbase 等等,看都别看,对于以后的你来说只是浪费时间。
5、利用好搜索引擎,有什么问题就百度,老手大部分的问题百度都能解决。
6、看视频不要看书,以后阶段的你看任何书,包含赫赫有名的《Java 编程思维》都是浪费时间。
7、看视频要跟着敲一遍甚至多遍,如果只看视频不跟着敲,你会发现最初啥都学不会。
8、视频中一些介绍历史的视频能够过一遍简略理解就行,节俭点工夫。
9、对于视频教程的选取:抉择近 2~3 年的教程,讲师让本人听着难受即可,点击高的视频程度根本差不多。
10、不懂的常识能够重复看,例如同一个知识点有两套教程,看完第一个没齐全了解,能够再看第二个,加深印象,也能够查些材料帮忙了解。
自学知识点
1、Java SE
1.1、Java 根底
根底概念 / 语法:面向对象(继承、封装、多态)根底、包、类、接口、办法、对象、属性、第一个 Java 程序。
数据类型:1)根本数据类型 8 种:byte、short、int、long、float、double、char、boolean;2)援用数据类型
变量类型:局部变量、实例变量(成员变量)、类变量(动态变量)
修饰符:public、private、不写、protected、static、final、abstract、synchronized,volatile
运算符:1)算术运算符:+、-、、/、%、++、–;2)关系运算符:==、!=、>、<、>=、<=;3)逻辑运算符:&&、||、!;4)赋值运算符:=、+=、-=、=、/=;5)条件运算符:Object x = (expression) ? value if true : value if false;
循环构造:for 循环、while 循环、do…while 循环
条件语句:if…else、if…else if…else
异样解决:try…catch…finally、throws、throw
字符串:String、StringBuilder、StringBuffer
其余:switch case、数组、日期工夫、枚举、应用 IDE 进行 DEBUG
1.2、汇合
Map:HashMap(最重要)、ConcurrentHashMap、TreeMap、Hashtable
List:ArrayList(最重要)、LinkedList
Set:HashSet(最重要)、TreeSet
1.3、多线程
线程生命周期
创立线程的三种形式:继承 Thread、实现 Runnable;实现 Callable
ThreadPoolExecutor(线程池)
锁:synchronized 和 Lock
1.4、I/ O 流
1.5、网络编程
1.6、反射
1.7、泛型
1.8、注解
小结:
1、该阶段很重要,倡议至多看两套不同的教程。因为每个老师的观点都会有一些片面性,当遇到纳闷的时候,能够看看其余老师的了解,可能就想通了。
2、看第一遍时会比较慢,第二遍会快一点,曾经把握的常识能够疾速带过。
3、有疑难的常识多看几遍,也能够网上看点博文辅助了解,切实看不懂的能够先记下来,前面学到肯定水平可能就了解了。
4、对于重点常识,能够做笔记来加深本人的了解,也不便后续本人温习。
5、Java 根底、汇合、多线程是外围中的外围。
章节指标:熟练掌握该章节所列的所有 Java 外围基础知识,能熟练地编写 Java 程序。
2、SQL
2.1、SQL
1)理解根底概念;2)把握 DML 语句的应用:SELECT、UPDATE、INSERT 和 DELETE;3)把握 DDL 语句的应用:操作表时用到的一些 SQL 语句。例如:CREATE、ALTER、DROP 等。
2.2、JDBC
把握根本的应用。
2.3、MySQL
把握根本的应用。
章节指标:熟练掌握 SQL 语句的根底应用,理解 JDBC 和 MySQL 的根底应用。
3、Java Web
3.1、偏前端内容
HTML、CSS、JS(JavaScript)、Ajax、jQuery
3.2、偏后端内容
Servlet、JSP、Request、Response、HTTP、Session、Cookie、Filter、Listener
Java Web 高级内容的相干技术在以后 Java 后端曾经比拟少间接应用到了,最近几年的 Java 程序员甚至可能都没接触过。大部分是被下一节的 SSM 框架给封装代替掉了,然而这一章节初学者还是有必要认真学习一下,做到能看得懂、能照着改。
章节指标:理解该章节所波及的常识,做到能看得懂、能照着改。对于 Servlet 能够略微多注意一下,Servlet 是本章节比拟重要的常识。
4、常用工具
4.1、Tomcat
Web 应用服务器。
4.2、Maven
我的项目构建治理,简略了解为用于导入 Jar 依赖的工具。
4.3、Git
分布式版本控制系统,简略了解为代码管理工具。
章节指标:须要晓得有这么些工具,而后把握其根本的应用即可。
5、外围框架
5.1、Spring
1)把握根本的应用;2)把握外围概念,需重点留神的知识点:IoC(管制翻转)、DI(依赖注入)、AOP(面向切面编程)、事务管制。
5.2、SpringMVC
1)把握根本的应用;2)把握外围概念,需重点留神的知识点:MVC 架构、Controller 里的各种注解、一个 HTTP 申请的流程。
5.3、MyBatis
1)把握根本的应用;2)把握外围概念,需重点留神的知识点:XML 文件里的 SQL 语法、接口(interface)和 SQL 的映射。
5.4、Spring Boot
把握根本的应用。
章节指标:理解 SSM 框架的根本应用,该阶段能够不必做到齐全了解,能够在我的项目实战里去通过理论的例子加深本人对 SSM 的了解。
6、我的项目实战
筹备 2~3 个我的项目实战,将之前所学的知识点利用起来,做出一个真正的我的项目(网站)。学习的我的项目必须应用 SSM 框架,加深本人对 SSM 的了解。该阶段所做的我的项目,也是将来写在你简历里的“我的项目教训”,须要跟着敲一遍。
指标:将之前所学常识串联起来,熟练掌握一个 Web 我的项目的残缺流程,通过我的项目加深对之前所学常识的了解,特地是 SSM 框架常识。
7、面试筹备
如果对于上述的 Java 基础知识你曾经能纯熟应用,而后也能纯熟搭建一个简略的 SSM 的我的项目。那我倡议你能够将工夫多花在面试筹备这一章节上,面试筹备的重要水平可能超过很多人的设想。同时在看面试题的过程中也能加深本人对之前常识的认知。
7.1、重点内容
Java 根底高频面试题
汇合高频面试题,重点:HashMap
多线程高频面试题,重点:synchronized、线程池
MySQL 高频面试题,重点:索引、锁
Spring/SpringMVC/MyBatis 高频面试题,重点:Spring
SSM 实战我的项目
该模块对应咱们下面学习的常识,然而只会应用是很难满足以后的面试要求的,因而须要针对这些常识进行面试强化,具体的题目能够看下我的面试系列文章。
7.2、进阶内容
JVM
Redis
Kafka
Zookeeper
Dubbo
算法:常见的算法,二分、排序等,能够刷剑指 offer 的题目
设计模式:能够次要看下单例模式
你可能会有疑难,为什么进阶里列的知识点都是之前下面没有提过的,还须要筹备面试题。之所以补充进阶局部,次要是为了应答以后互联网行业内卷越来越重大的景象,这几个知识点都是以后 Java 面试的高频考点,然而要像后面的基础知识一样,系统地学习这些常识对于初学者以后阶段来说根本不太可能,所以一个比拟适合的形式是间接看高频面试题,而后将高频面试题带着了解记下来。
章节指标:各个知识点的高频面试题熟记于心,尽量做到了解,不能了解就先硬背。
常见问题
1、自学时遇到不懂的常识怎么办?
答:百度 / 谷歌找答案,初学者遇到的问题根本百度上都能找失去,多利用搜索引擎,锤炼本人的解决问题的能力,这个能力会贯通你的整个程序员生涯。
2、普通人按本文自学后能达到什么水平?
答:如果你的确很致力地花了超过 1000 个小时,按本文的路线去学习,把握了本文所介绍的常识,那我置信你找个工作是不难的。
3、在网上看到有人自学 6 个月进 BAT?
答:自学 6 个月进 BAT 有吗?我置信是有的。多吗?我置信是海底捞针。
针对这个话题,大部分是假的。
4、自学还是培训机构?
答:坦率地讲,培训机构必定比自学要轻松点,至多培训机构会帮你们制订好方向。然而自学其实会给公司留下不错的印象,公司会感觉你的学习能力不错,同时自学也很锤炼人,对你当前的成长有帮忙。
我只能帮你们剖析,你们能够依据本人的状况去抉择。然而,我感觉如果你无奈靠自学进入这一行,你当前的路可能也会走得比拟艰巨。
然而如果你曾经报了培训机构,那就好好学不要多想,并不是说肯定不能找培训机构,先入行再说。
5、算法是否重要?
答:对于 0 根底自学的同学来说,算法的位置能够略微放前面一点,以后的指标还是先打好 Java 根底,能写 Java 代码。
6、是否应该先学 C 语言?
答:说实话,我集体并不倡议,尽管 C 语言的确是挺重要的,然而我感觉如果有这个工夫,还不如把 Java 根底多坚固一下。
7、初中 / 高中 / 中专学历能不能自学 Java?
答:网上可能有很多人说学历不重要啊,balabala。然而负责任地说,学历还是很重要的,我不是很举荐这些同学自学 Java,因为真的比拟难,就算学会了也困难重重,很多企业都有学历限度。
目前来看,至多要有大专学历,否则倡议还是认真思考下,除非你的确曾经穷途末路了。
8、大龄转行自学 Java 是否可行?
答:跟学历一样,大龄在这个行业也是个问题,如果当初有工作,我倡议能够先用业余时间学看看,然而不要轻易辞职自学,危险很大。
9、看书学习快,还是看视频学习快呢?
答:视频。自学阶段的小白看书效率很低,根本是看不下去的,不举荐看书,能够后续学习的差不多了,看点入门的书籍辅助。初学阶段次要看视频,而后辅助看一些网上入门的博文。
10、为什么不能看书,我有时候看了一上午视频就感觉很塌实,下午去教室看书不行吗?
答:因为本文还是次要按大多数人的学习状况来写,所以失常会举荐老手看视频,然而如果视频有时候看不下去,想尝试下看书,我感觉也是能够的,然而如果看书看不下去后,阐明不适合,就不要持续保持了,还是看视频为主。
看书的话,《Java 编程思维》我必定是不举荐的,这本书我本人过后看过,成果不好,不举荐。
目前看来对于初学者,评估比拟好的是:《Java 核心技术·卷 I 基础知识》,这本书我本人没看过,然而我看有好几个正在自学的同学举荐看,而后自身评估也不错,所以想看书的同学倡议能够入这本书试试。
11、有不少大一新生示意看不懂?
答:大一新生看不懂,我感觉是失常的,也不须要急,因为你们所处的工夫点还是很早的,只有当初抓紧时间,按本文的路线去学习,到大三应该就学的差不多了,前面还有工夫去学学进阶的常识。前面毕业后,你们会发现你们的劣势是比拟大的。
12、好多货色听不懂,还有好多词看了后就忘了,不晓得具体是啥意思,搞得越来越懵了?
答:这个是初学者失常都会遇到的,不须要很慌乱,没有什么捷径,就是多看、多敲、多练,长此以往用多了,就记住了。