0 基础 Java 自学之路(2021年最新版)_java零基础自学-程序员宅基地

技术标签: 我要进大厂  面试  经验分享  恰饭  java  1024程序员节  程序人生  

微信搜索【程序员囧辉】,关注这个坚持分享技术干货的程序员。

我的最新文章:百万级QPS,支撑淘宝双11商品浏览需要哪些技术

前言

如果你想自学 Java,认真看完本文,你以后的职场生涯至少少走1年弯路。

本文会持续更新,建议收藏。

初衷

在 CSDN 上经常有同学私聊我询问 “如何自学 Java”、“想转行 Java 靠谱吗” 等问题,因为自己也是在大学时自学的 Java,所以我能理解这些同学的痛苦和迷茫。

写这篇文章前,我看了一些网上 Java 自学的文章,很多我都不太满意,有的甚至让我感到愤怒,要么是站在现有的视角侃侃而谈,要么是纯粹的瞎编骗小白。

很多文章都有一个老毛病:完全没有从小白的视角去思考,内容太多,什么微服务、架构、大数据都来了,这根本不是自学阶段该去看的东西,小白看了这些文章,只会越看越懵逼,根本没法下手。

其实我在18年写过一篇“0基础Java自学之路”,但是现在来看,当时那篇文章写的过于简单,只是提供了一个思路,但是很多内容没有写。

如今已经过去了3年,我对于这个话题又有了一些新的思考,同时为了拯救广大正处于水深火热的同学们,于是,我决定重新写一篇自学教程。

自我介绍

在写本文前有必要介绍下我自己,让大家更好的去比较和参考。

我大学是普通本科,大三开始自学的 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基础教程、MySQL教程、JavaWeb教程、SSM整合教程、Java项目实战等等,然后按“最多点击”排序,在前几个里寻找一个合适的即可,一般点击高的都是质量还可以的。

很重要的建议

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 程序。

配套教程

【尚硅谷】Java零基础教程视频

【动力节点_2017年版】Java零基础教程视频

【动力节点_2020年版】Java零基础教程视频

2、SQL

2.1、SQL

1)了解基础概念;2)掌握 DML 语句的使用:SELECT、UPDATE、INSERT 和 DELETE;3)掌握 DDL 语句的使用:操作表时用到的一些SQL语句。例如:CREATE、ALTER、DROP等。

2.2、JDBC

掌握基本的使用。

配套教程

【动力节点】JDBC从入门到精通视频教程-JDBC实战精讲

【尚硅谷】JDBC核心技术(新版jdbc)

2.3、MySQL

掌握基本的使用。

配套教程

【尚硅谷_2019版】李玉婷2019版MySQL基础(P243---P326)

【尚硅谷_2017版】MySQL数据库全套完整版(sql数据库优化)

【狂神说Java】MySQL最新教程通俗易懂

【动力节点】MySQL基础入门-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 是本章节比较重要的知识。

配套教程

【尚硅谷】最新版JavaWeb全套教程,java web零基础入门完整版

【黑马程序员】完整JavaWeb快速入门教程

【狂神说Java】JavaWeb入门到实战

4、常用工具

4.1、Tomcat

Web 应用服务器。

4.2、Maven

项目构建管理,简单理解为用于导入 Jar 依赖的工具。

配套教程

【尚硅谷】Maven视频(maven零基础入门)

4.3、Git

分布式版本控制系统,简单理解为代码管理工具。

配套教程

【尚硅谷】Git与GitHub基础全套完整版教程

【狂神说Java】Git最新教程通俗易懂

章节目标:需要知道有这么些工具,然后掌握其基本的使用即可。

5、核心框架

5.1、Spring

1)掌握基本的使用;2)掌握核心概念,需重点注意的知识点:IoC(控制翻转)、DI(依赖注入)、AOP(面向切面编程)、事务控制。

配套教程

【尚硅谷】Spring5框架最新版教程(idea版)

【狂神说Java】Spring5最新完整教程IDEA版通俗易懂

【黑马程序员】Spring教程IDEA版

【动力节点】2020最新Spring框架教程【IDEA版】

5.2、SpringMVC

1)掌握基本的使用;2)掌握核心概念,需重点注意的知识点:MVC 架构、Controller 里的各种注解、一个 HTTP 请求的流程。

配套教程

【尚硅谷】SpringMVC实战教程完整版(spring mvc框架源码解析)

【狂神说Java】SpringMVC最新教程IDEA版通俗易懂

【黑马程序员】SpringMVC教程IDEA版

【动力节点】2020最新SpringMVC教程【IDEA版】

5.3、MyBatis

1)掌握基本的使用;2)掌握核心概念,需重点注意的知识点:XML 文件力的 SQL 语法、接口(interface)和 SQL 的映射。

配套教程

【尚硅谷】MyBatis实战教程全套完整版

【狂神说Java】Mybatis最新完整教程IDEA版通俗易懂

【黑马程序员】Mybatis教程IDEA版

【动力节点】2020最新MyBatis教程【IDEA版】

5.4、Spring Boot

掌握基本的使用。

配套教程

【尚硅谷】2021版SpringBoot2零基础入门springboot全套完整版

【狂神说Java】SpringBoot最新教程IDEA版通俗易懂

章节目标:了解 SSM 框架的基本使用,该阶段可以不用做到完全理解,可以在项目实战里去通过实际的例子加深自己对 SSM 的理解。

6、项目实战

准备 2~3个项目实战,将之前所学的知识点应用起来,做出一个真正的项目(网站)。学习的项目必须使用 SSM 框架,加深自己对 SSM 的理解。该阶段所做的项目,也是未来写在你简历里的“项目经验”,需要跟着敲一遍。

目标:将之前所学知识串联起来,熟练掌握一个 Web 项目的完整流程,通过项目加深对之前所学知识的理解,特别是 SSM 框架知识。

配套教程

【尚硅谷】SSM框架实战,ssm整合教程

【狂神说Java】SSM框架最新整合教学IDEA版

7、面试准备

如果对于上述的 Java 基础知识你已经能熟练使用,然后也能熟练搭建一个简单的 SSM 的项目。那我建议你可以将时间多花在面试准备这一章节上,面试准备的重要程度可能超过很多人的想象。同时在看面试题的过程中也能加深自己对之前知识的认知。

7.1、重点知识点

  • Java 基础高频面试题
  • ​集合高频面试题,重点:HashMap
  • 多线程高频面试题,重点: synchronized、线程池
  • MySQL高频面试题,重点:索引、锁
  • Spring/SpringMVC/MyBatis高频面试题,重点:Spring
  • SSM 实战项目

该模块对应我们上面学习的知识,但是只会使用是很难满足当前的面试要求的,因此需要针对这些知识进行面试强化,具体的题目可以看下我的面试系列文章。

7.2、进阶知识点

  • JVM
  • Redis
  • Kafka
  • Zookeeper
  • Dubbo
  • 算法:常见的算法,二分、排序等,可以刷剑指offer的题目
  • 设计模式:可以主要看下单例模式

你可能会有疑问,为什么进阶里列的知识点都是之前上面没有提过的,还需要准备面试题。之所以补充进阶部分,主要是为了应对当前互联网行业内卷越来越严重的现象,这几个知识点都是当前 Java 面试的高频考点,但是要像前面的基础知识一样,系统的学习这些知识对于初学者当前阶段来说基本不太可能,所以一个比较合适的方式是直接看高频面试题,然后将高频面试题带着理解记下来。

章节目标:各个知识点的高频面试题熟记于心,尽量做到理解,不能理解就先硬背。

面试真题可以参考我的文章Java 基础高频面试题(2021年最新版)

常见问题

1、自学时遇到不懂的知识怎么办?

答:百度/谷歌找答案,初学者遇到的问题基本百度上都能找得到,多利用搜索引擎,锻炼自己的解决问题的能力,这个能力会贯穿你的整个程序员生涯。

2、普通人按本文自学后能达到什么程度?

答:如果你确实很努力的花了超过1000个小时,按本文的路线去学习,掌握了本文所介绍的知识,那我相信你找个工作是不难的。

3、在网上看到有人自学6个月进 BAT?

答:自学6个月进 BAT 有吗?我相信是有的。多吗?我相信是海底捞针。

针对这个话题,大部分是假的,更多的是一些人/机构用于打广告的,看了文章内容99%要你付费加群或买资料。

4、自学还是培训机构?

答:坦白的讲,培训机构肯定比自学要轻松点,至少培训机构会帮你们制定好方向。但是自学其实会给公司留下不错的印象,公司会觉得你的学习能力不错,同时自学也很锻炼人,对你以后的成长有帮助。

我只能帮你们分析,你们可以根据自己的情况去选择。但是,我觉得如果你无法靠自学进入这一行,你以后的路可能也会走得比较艰难。

5、算法是否重要?

答:对于0基础自学的同学来说,算法的地位可以稍微放后面一点,当前的目标还是先打好 Java 基础,能写 Java 代码。

6、是否应该先学 C 语言?

答:说实话,我个人并不建议,虽然 C 语言确实是挺重要的,但是我觉得如果有这个时间,还不如把 Java 基础多巩固一下。

7、初中/高中/中专学历能不能自学 Java?

答:网上可能有很多人/机构说学历不重要啊,balabala。但是负责任的说,学历还是很重要的,我不是很推荐这些同学自学 Java,因为真的比较难,就算学会了也困难重重,很多企业都有学历限制。

目前来看,至少要有大专学历,最好有本科,否则建议还是仔细考虑下,除非你确实已经走投无路了。

8、大龄转行自学 Java 是否可行?

答:跟学历一样,大龄在这个行业也是个问题,如果现在有工作,我建议可以先用业余时间学看看,但是不要轻易辞职自学,风险很大。

9、看书学习快,还是看视频学习快呢?

答:视频。自学阶段的小白看书效率很低,基本是看不下去的,不推荐看书,可以后续学习的差不多了,看点入门的书籍辅助。初学阶段主要看视频,然后辅助看一些网上入门的博文。

10、为什么不能看书,我有时候看了一上午视频就感觉很浮躁,下午去教室看书不行吗?

答:因为本文还是主要按大多数人的学习情况来写,所以正常会推荐新手看视频,但是如果视频有时候看不下去,想尝试下看书,我觉得也是可以的,但是如果看书看不下去后,说明不合适,就不要继续坚持了,还是看视频为主。

看书的话,《Java编程思想》我肯定是不推荐的,这本书我自己当时看过,效果不好,不推荐。

目前看来对于初学者,评价比较好的是:《Java核心技术·卷 I 基础知识》,这本书我自己没看过,但是我看有好几个正在自学的同学推荐看,然后本身评价也不错,所以想看书的同学建议可以入这本书试试。

11、有不少大一新生表示看不懂?

答:大一新生看不懂,我觉得是正常的,也不需要急,因为你们所处的时间点还是很早的,只要现在抓紧时间,按本文的路线去学习,到大三应该就学的差不多了,后面还有时间去学学进阶的知识。后面毕业后,你们会发现你们的优势是比较大的。

12、好多东西听不懂,还有好多词看了后就忘了,不知道具体是啥意思,搞的越来越懵了?

答:这个是初学者正常都会遇到的,不需要很慌张,没有什么捷径,就是多看、多敲、多练,久而久之用多了,就记住了。

福利

文章提到的知识点,我在B站找了一些当前点击量和评价比较不错的教程,简单的整理了一份“0 基础 Java 自学之路(配套教程)”,需要的微信搜索:程序员囧辉,在菜单栏 “自学教程” 自行获取即可。

如果觉得不合适,也可以按文中“自学教程获取”提到的方法去自己寻找合适的,也是可以的。

最后

如果你的问题没有在本文提到,或者你对本文有疑问,你可以在文章下方留我留言,对于每个留言我基本都会在24小时内回复,极端情况下可能会放到周末回复,原则上只要是与本文相关的正常留言我都会回复。

对于评论里的题目,如果是很多人关注的,我在后续会添加到文章的“常见问题”里。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/v123411739/article/details/115498947

智能推荐

Flink实战3-数据实时写入HBase的Sink方式_flink sink hbase-程序员宅基地

文章浏览阅读5.4k次,点赞3次,收藏26次。背景接入Kafka实时数据经过数据处理写入HBase,后续会应用于类似变量系统以及实时日志中,对于变量系统这类中间需要做实时缓存宽表可能使用HBase连接极其频繁,所以是使用客户端还是Sink的方式就看实际情况而定,具体数据处理后的落库Sink还是比较方便的;摘要关键字Flink,Sink,HBase,数据处理,数据流转设计使用的是Max Well数据源,将业务数据接入Kafka,Flink-Source接入Kafka,中间经过数据流转将数据存储到HBase作实时表;实现说明_flink sink hbase

动态改变title标题_dash 标题-程序员宅基地

文章浏览阅读276次。文章目录动态改变title标题实现效果该上代码了动态改变title标题1、主要用到Vue的自定义指令directive。参考地址: link.实现效果该上代码了一、在main.js引入 // 动态改变title标题 Vue.directive('title', { inserted: function(el, binding) { document.title = binding.value; }, });二、将v-title放在每个文件的根节_dash 标题

使用组件化开发思路替换 SAP Spartacus 的 Logo_替换sap的思路-程序员宅基地

文章浏览阅读299次。简单来说,组件是应用程序的任何部分,可以在逻辑上分组并被视为单一元素,理想情况下可以作为应用程序其余部分的构建块重用。这个组件中可能有其他组件,也可能在其他组件中使用,但每个单独的“组件”都是一个独立的东西。例如,您可能有一个在每个页面上都有 logo 的网站。因此,您可以创建一个“标题组件”,然后您可以为每个页面重用该标题组件,而不是从头开始编写代码。这个标题组件可能包含一个“搜索栏组件”和一个“导航栏”组件,它们是它们自己的独立元素,它们在标题中使用,但也可以在站点的其他地方重用。看个具体的例子:我_替换sap的思路

python界面登录-验证码(三)_pythonui自动化登录验证码-程序员宅基地

文章浏览阅读1.5k次。真的要好好学一下写作了,等好好的有条理的整理自己做过的工作才能方便的进行下一步的使用,能整理好自己的学习的东西才能提高效率,更加明确的进行下一步的工作提高自己的工作效率!!!下一步就是在以下前提下进行网页的登录和课程的查询了:import osimport timefrom bs4 import BeautifulSoup from selenium import webdriv..._pythonui自动化登录验证码

opencv3.1(python3.5)安装_python3.5 opencv-python==3.1.0.0-程序员宅基地

文章浏览阅读7.6k次。1. python管网下载 安装python3.5 (32bit或者64bit)2. 下载 opencv3.1 ( 32bit 或者64bit )opencv_python-3.1.0-cp35-cp35m-win32.whlopencv_python-3.1.0-cp35-cp35m-win_amd64.whl下载链接为:这个链接有多个python的库 numpy_python3.5 opencv-python==3.1.0.0

spring 与hibernate多数据源配置-程序员宅基地

文章浏览阅读89次。Spring2.0.1以后的版本已经支持配置多数据源,并且可以在运行的时候动态加载不同的数据源。通过继承AbstractRoutingDataSource就可以实现多数据源的动态转换。目前做的项目就是需要访问12个数据源,每个数据源的表结构都是相同的,所以要求数据源的变动对于编码人员来说是透明,也就是说同样SQL语句在不同的环境下操作的数据库是不一样的。具体的配置如下:一、首先需要写一个静..._hibernate设置多数据源 parentdatasource

随便推点

自定义CollectionViewCell之-----瀑布流效果_cellcollectionview瀑布流-程序员宅基地

文章浏览阅读1.1k次。本文详细的书写了如何达到瀑布流效果(附图片)_cellcollectionview瀑布流

分布式事务之基础理论(CAP/BASE理论)篇_分布式事务基础理论cap-程序员宅基地

文章浏览阅读346次。一、概述通过前面的学习,我们了解到了分布式事务的基础概念。与本地事务不同的是,分布式系统之所以叫分布式,是因为提供服务的各个节点分布在不同机器上,相互之间通过网络交互。不能因为有一点网络问题就导致整个系统无法提供服务,网络因素成为了分布式事务的考量标准之一。因此,分布式事务需要更进一步的理论支持,接下来,我们先来学习一下分布式事务的CAP理论。在讲解分布式事务控制解决方案之前需要先学习一些基础理论,通过理论知识指导我们确定分布式事务控制的目标,从而帮助我们理解每个解决方案。二、CAP理论CAP是_分布式事务基础理论cap

小程序实现点击按钮回到顶部_微信小程序 topreturnbtn-程序员宅基地

文章浏览阅读526次。按钮样式wxml<view class="topbtn" bindtap="gotopAction" wx:if="{{up_show}}"> <image src="./../../image/topimg.png"></image></view>wxss.topbtn{ position: fixed; width: 120rpx; height: 120rpx; border-radius: 50%; bottom:._微信小程序 topreturnbtn

docker-compose运行ElasticSearch、Kibana、Cerebro_docker-compose elasticsarch kib-程序员宅基地

文章浏览阅读1.1k次。docker-compose.yamlversion: '2.2'services: cerebro: image: lmenezes/cerebro:0.8.4 container_name: cerebro ports: - "9000:9000" command: - -Dhosts.0.host=http://elasticsearch:9200 networks: - es7net kibana: _docker-compose elasticsarch kib

一篇文章快速搞定——deepin搭建java开发环境_deepin jdk-程序员宅基地

文章浏览阅读4.8k次,点赞5次,收藏16次。linux发行版---深度deepin操作系统搭建java开发环境,deepin从入门到放弃系列_deepin jdk

PASCAL VOC 数据集转化为yolo数据集格式_pascalvoc转换成yolov c#-程序员宅基地

文章浏览阅读6.3k次,点赞16次,收藏39次。常常我们拿到的数据集格式是PASCAL VOC的,当我们要用yolo系列的检测算法时,就要将VOC的数据格式转化为yolo所需要的格式。小编就给大家展示转化的过程。_pascalvoc转换成yolov c#

推荐文章

热门文章

相关标签