目前各个平台上都有着各种各样的教程,给我们带来了更多选择的同时,也为新手小白带来了一丢丢的麻烦:如何系统学习Java?选择什么样的方式学习?本篇就来解答这些问题。
一 学习方式的选择
学习计算机的主流方式主要是视频课程、书本、源码、博客等个人平台这几种。如果是纯小白,那么最推荐的就是视频课程,这种方式相比于博客来说更加系统,相比于直接去啃书本来说也更加易于理解(毕竟有老师的讲解,会相对通俗一点)。需要注意的是,这里的课程并不包括学校的课程,大多数本科院校学习的内容都较为基础,不够深入,想要只靠本科学习到的东西从事这个行业很困难,而且大家也都知道计算机更新迭代速度很快,暂不提学校课程与现在企业所用的技术是否存在脱轨现象,单就论我们大四毕业后才参加工作,大一大二所学的课程已经是四年前的了,肯定不够用。其实,学校老师的工作更像是一个领路人,“师傅领进门,修行在个人”,门已经进了,能走多远就看我们私下花多少功夫了。
当我们有一定基础后,就可以着手去读一些比较经典的教材了,比如Java程序员基本都知道的《Java核心基础》、《Java并发编程的艺术》、《深入理解Java虚拟机》、《Redis设计与实现》等,可以进一步的深入理解相关知识,并且有之前视频课程的铺垫,理解起来也更加容易。
对于博客,我更喜欢用它来查漏补缺,或者学习一些晦涩难懂的知识点,因为博客上的作者会把这些很难理解的知识点结合自己的理解,用各种通俗方式把它掰开、揉碎了讲解清楚,一篇看不懂就多看几篇,总有适合我们的。
至于源码,可以在我们学完基础后,深入学习并发编程、JVM等内容时进行参考,虽然大多数时候读源码是个很痛苦的事情,但是有些问题十行代码就能解释清楚好几页纸才能讲明白的事情。
以上就是我个人关于选择学习方式的一些心得,大家也可以结合自己的情况,选择适合自己的方式。但是不管选择什么方式学习,实践是必不可少的,学习编程最重要的就是敲代码!只有自己动手才会发现会自己存在哪些问题,有哪些没有掌握的内容,也只有多写多练,才能避免走到“背代码”的误区里。
二 Java基础
学习Java最开始学习的自然是Java基础,对Java这门语言有一个初步的了解。大多数同学的入门语言都是c,有了c的基础,学习Java也会很快,大多数内容大同小异,主要的要理解“面向对象”这个概念。
在这个部分我们主要要学习基础语法、封装继承多态三大特性、接口、泛型、反射、注解、集合、异常与调试、 Java I/O这些内容。学习完这些之后,我们就可以学习一下进阶内容:网络编程、并发编程、JVM。
虽然课程将近100个小时,但是非常的全,不但涉及到了所有的知识点,而且有非常非常多的练习题目(可能这也是时长这么长的原因),所有练习都来自于美国斯坦福大学Java习题、力扣算法题或者大厂面试题,练习也是由易到难,在学习到不同阶段时也会有练手的小项目。可以说跟完这套课程,基本Java入门就已经搞定了,超越99%同龄人(小小夸张一下嘿嘿)。我也有在整理更新这门课程的课程笔记,目前刚刚更新到结构体部分,同样包含了所有的练习,但是还是推荐时间充裕的同学去看视频哈~
【核心笔记】Java入门到起飞,小白都能看懂的Java教程——1.基础入门-CSDN博客
【核心笔记】Java入门到起飞,小白都能看懂的Java教程——2.运算符(附练习)-CSDN博客
除此之外,还可以阅读《 Java 核心技术 卷I》这本书。这本书更注重实用性,广度和深度都恰到好处,非常适合作为Java学习的教材。
电脑上没有安装Java环境也不怕,可以使用菜鸟教程在线编辑器 (runoob.com)进行在线编译(不过还是要尽早配置好环境)。
最后推荐几个文档教程:
菜鸟教程:Java 教程 | 菜鸟教程 (runoob.com)
廖雪峰教程:Java教程 - 廖雪峰的官方网站 (liaoxuefeng.com)
Java在线中文手册:Overview (Java SE 11 & JDK 11 ) (runoob.com)
学完这部分,就可以上手做一些类似管理系统或者贪吃蛇、飞机大战这样的小项目了。
三 数据库
数据库包括MySQL、redis、MongoDB等等,不过现阶段空考虑到实用性和难易度,我们优先学会MySQL就可以了。主要包括增删改查基础操作、JDBC、数据库连接池等内容。
这里推荐Mosh老师的付费课程,全程大约十个小时左右,但是贴心的我也已经帮大家找好了免费的、中文字幕的版本,依旧是在万能的阿b上:
【中字】SQL进阶教程 | 史上最易懂SQL教程!10小时零基础成长SQL大师!!_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1UE41147KC/?spm_id_from=333.999.0.0&vd_source=209879771cd07d6dc85c0a82b27b2898这门课程的相关资料和笔记还在整理中,有需要的小伙伴可以直接问我要~
教材的话依旧推荐的是大家都熟知的《MySQL必知必会》(实际上没有图片看起来那么厚,全书也就二百多页)。
这本书同样更注重实践,适合快速入门。
四 Java web
Java web就不再单纯是后端的内容了,也包括了许多前端的知识,首当其冲的就是前端三剑客: Html、CSS和 Java Script,学习完Java之后学这些简直爽翻,超级简单,一天速成都不在话下。学习完这些之后我们就可以写出简单的页面了,想要学更深一些的可以再学习一下Vue和React等前端技术。此外,还有后端 Java 技术如Servlet、Filter、Listener、Session、Cookie等。
课程这里推荐尚硅谷的Java web教程,大概40天就可以刷完:
尚硅谷最新版JavaWeb全套教程,javaweb零基础入门完整版_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Y7411K7zz/?vd_source=209879771cd07d6dc85c0a82b27b2898课程包括了Servlet程序、Filter过滤器、Listener监听器、jsp页面、EL表达式、JSTL标签库、jQuery框架、Cookie技术、Session会话、JSON使用、Ajax请求等内容,更加贴近企业开发的需求,并会在课程最后带领我们做一个书城项目,让我们彻底学透Java web。
五 主流框架
提到主流框架,大家自然会想到SSM,即 Spring、Spring MVC 和 MyBatis。但在学习SSM之前,还要先学习Maven和Git。
Maven是一个项目管理工具,可以帮助我们管理jar包,我们只需在项目的 pom.xml 中配置相关依赖,就可以直接从远程仓库同步到本地,解决了我们寻找jar包的烦恼。Maven的学习很简单,随便找一个课时最短的刷完,简单了解一下就OK~
【IDEA版胎教级】都学这么久编程了你Maven是什么都不知道嘛?太丢人了吧?_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1YL411t7Ak/?spm_id_from=333.337.search-card.all.click&vd_source=209879771cd07d6dc85c0a82b27b2898Git是一个开源的分布式版本控制系统,最大作用就是对文件进行版本管理,可以在不同版本进行切换修改,还支持协作开发,基本所有的企业开发都要用到Git。和Maven一样,找一个课时短的,简单了解一下使用就可以。 【狂神说Java】Git最新教程通俗易懂_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1FE411P7B3/?spm_id_from=333.337.search-card.all.click接下来进入正题,也就是SSM的学习,这个课程大概40小时左右,大家有其他觉得不错的课程也可以选择:
2020最新(idea版)SSM框架全套教程-spring-springmvc-mybatis_哔哩哔哩_bilibili2020最新(idea版)SSM框架全套教程-spring-springmvc-mybatis共计323条视频,包括:1-1 MyBatis-MVC架构模式回顾、1-2 MyBatis-三层架构、1-3 MyBatis-三层架构中使用的框架等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1Tv411b7Dp学习完SSM后还没有结束,学习完的小伙伴可以发现,整合SSM框架非常非常麻烦,所以我们更多时候会使用Spring Boot。当然,如果只是为了使用 Spring Boot,我们完全可以跳过SSM的课程,毕竟 SSM 配置真的很麻烦也很少用,但是不推荐,因为面试的时候你会发现,面试官问的全是Spring的底层原理问题,如果不学SSM,完全听不懂他在问什么=.=。
这里的课程推荐黑马的这套课程,虽然只有24h,但是包含了基础、项目、面试三大模块,可以说一套顶三套,非常值得一学。从后端打通了Springboot3+jdk17,前端采用的也是最新的技术vue3,非常详细的讲解就后端接口处理数据,唯一的小缺点在于组件使用不是很多,但也不是什么大毛病。
五 服务中间件与项目实战
学到这里基本我们就可以自行开发项目了,但是在企业中,还会出现许多复杂的业务场景,这就要求我们学习一些中间件,例如Redis、MQ、Elasticsearch等。同时,我们也要多可以一些项目,一方面巩固我们所学的知识,另一方面也可以以练带学,在实践中查漏补缺。
Redis在实际业务中运用很多,也是面试时的高频考点,大家可以多看看《Redis的设计与实现》这本书
也可以参考Redis的中文教程:
关于项目的教程网上非常多,大家可以自行寻找课程,也可以到GitHub上找一些大佬的项目进行学习,多研究思考优秀项目的业务逻辑和功能设计,将它们内化为自己的经验。
六 微服务和分布式
对于校招的同学而言,学会并学好以上内容就够了,但是对于深入学习Java开发的同学,还需要再了解一下微服务和分布式的内容,例如Spring Cloud ,Dubbo,ZooKeeper等。