大家好,我是bigsai 好久不见,甚是想念。本文就自学Java的n个问题和n个方法做出一些建议,并且推荐了一条自学Java的路线,比较适合一些新入门的小白。
在这里插入图片描述
无论你是大学生还是在职人员,想学Java时,都会面临两个选择,自学或者报班。报班通常太费钱,时间又不自由;自学又不知道如何下手,担心自己坚持不下来。怎么办呢?
本文将解答你自学Java的N种问题:
你适不适合自学Java呢?
如何自学Java呢?
有没有靠谱的Java自学资料推荐?
怎样让自己看到进步,坚持下来?
……
以上问题,课程中我都会呕心给你梳理答案,赶快开始学习吧。
在自学前你可能会因为自身的条件有很多困惑和疑虑,不清楚自己是否适合自学Java。下面我们来做个测验,来检测一下你是否适合自学Java。
第一道题:你对学习Java的信念有多强?
最低分0分,最高分5分,你给自己打几分?
对学习Java抱有坚定的信念是学习Java的必备条件,如果你给自己的打分小于等于2.5分,建议你直接放弃学习Java吧。如果你给自己的打分大于2.5分(越高越好),恭喜你,第一关的考验过了!
第二道题:你学Java的目的是兴趣提升 or 就业?
如果你学习Java只是兴趣提升,那么你无论是自学或者报班怎么学都是适合的,因为你不差时间。那么后面的考验题你也可以直接跳过,看后面的干货。
但如果你是为了就业而学习Java,那对学习Java效果和时间都有一定要求,还要满足社会岗位要求。建议你好好考虑报班还是自学。
如果你大于30岁的话,我已经不推荐你学习Java了,一方面30岁后学习能力和精力堪忧,另一方面30岁的Java初级小白几乎找不到工作。
但如果你小于30岁的话,那你的客观条件还是可以学习Java的。剩下的就要考验你的自控力和毅力了。
第三道题:最低分0分,最高分5分,你给自己的自控力和毅力打几分?
如果你的打分小于3分,我建议你报班学习Java,自学不适合你。(如果你不能确定自己的自控力水平,你也可以去网上找一些自控力测试的问卷。)
但如果你自控力较强、个人时间较多、热爱独立思考钻研的话,那么恭喜你,我认为你是非常适合自学的。如果你也选择自学,那么本课程的内容你可以好好学习借鉴,相信你一定可以找到一条适合自己的道路!
最后你也许会问,性别、英语水平、数学水平、是否为科班等是否影响自学Java,如果你上面的测试都通过了,这些其实都是一些非关键性的影响因素。
我们用一张图总结一下以上的所有问题:
选择图
虽然性别、英语水平、数学水平、是否为计算机专业都等不是关键因素,但当你是女孩子,英语、数学水平较差,非计算机专业相对于男孩子,英语、数学水平较好的计算机专业还是会有一些影响,为了达到同样的结果可能需要付出更多的努力。
我们这里拿计算机专业和非计算机专业比较一下。
计算机专业和非计算机专业自学Java的区别?
虽然说计算机主要靠自学,但是计算机专业的学生相比非计算机还是有很大优势的,大部分计算机专业是有开设Java这门课程的,可以让这些学生在学习Java的道路上快速度过"冷启动";还有一些重要的基础课,例如数据结构、操作系统、数据库、计算机网络等课程能够帮助学生更深入地了解计算机,学习起Java语言也能有更深层次地理解。
而非计算机专业在自学Java时,会因为有原专业课程、作业的限制,学习时间相比计算机专业学生少了不少,但这些问题是可以被克服解决的,可以多花一些课余时间、周末时间,学习练习Java,也可蹭一蹭计算机专业开设的Java课程,多与计算机相关专业同学交流碰撞。自学Java的心态也很重要,不要因为被本专业课程拖累而埋怨,要乐观地去面对学习上的困难,有长远的眼光,阳光总在风雨后!
总的来说,计算机专业自学Java资源、时间更多,更需注重自学的方法和内容;而非计算机条件较难,除注重方法和内容之外,重要的是要坚持在百忙之中挤出很多时间留给Java,这对毅力是非常大的考验。
当你适合自学的时候,那么你就要寻求好的方法提高自学Java的效率,如何做呢?看看下面内容吧~
这里我总结了三大点,分别从认识、方法、反馈角度来写,其中一定有适合你的方案!
自学Java前,要对Java和Java体系知识有一定认识,心中有个大概的轮廓去学习,方能更踏实。通过几个问题了解Java。
什么是Java?
Java是一种可以撰写跨平台应用程序的、面向对象的程序设计语言。简单说,Java就是一种语言,不过是一种跑在JVM上的语言,Java编译后是字节码,而JVM会把这些字节码解释成机器码,然后做出相应的动作。
Java能干什么?
Java当前用的较多的就是做后端开发、大数据开发、安卓开发,这是当前Java技术栈较为热门的三种岗位,其中以Java后端的市场需求最大。Java也可以做桌面应用开发、游戏开发,但需求相对较少。
国内大厂,像阿里巴巴、美团、京东、拼多多等,使用的主要语言都是Java,大部分中小企业为了成熟稳定也选择Java作为后端开发语言。此外,很多著名的中间件是由Java编写的,例如:Elasticsearch、RocketMQ、Hadoop等。
Java入门部分:
Java进阶部分:
当然,上面只是罗列了大部分知识点,还有很多知识比如日志分析监控(ELK)、持续集成、分库分表等也都是热门技术,Java后端技术体系庞大。这些内容可以根据你的工作或者兴趣,选择性深入学习。
自学Java一般有书籍、视频、博客等学习资料,这里主要讲解三者在自学Java中的异同点。
image-20210331001025515
看书是最为传统的学习方式,我们从小到大大部分的自学知识是通过看书来获得的,所以可能很多人都喜欢和适应这种方式。书籍具有严谨、体系完整等特点,并且纸质的内容来回翻阅在回顾的时候也更便捷。
但看书也有一些缺点:可能分不清主次,在学习Java的时候其实是有侧重点的,而书上可能在这方面并不会有太多的介绍和标注,并且一些冷门淘汰知识可以不用学习(例如Java Swing部分);有些内容即使作者写得很棒了,但可能会因为案例、解释较少不能完全理解(尤其是小白)。
比起书籍,更多人愿意看视频自学Java,因为看书时大部分人会觉得比较枯燥。但是视频就不一样了,视频中老师们通常会边敲边讲解,更易于知识点的理解,并且人是感性动物,看视频就如同与老师交流,好的老师会让学习效率直接翻倍。
看视频当然也会有些缺点,视频时间较长较多,很难快速回顾学过的知识或者快速浏览章节内容,所以有可能会浪费一点学习的时间。
博客是程序员必不可少的学习资源,近些年高质量博客、文章也越来越多。这种博客文章阅读比较方便,内容选择也比较丰富,好的博客图文并茂生动形象非常有助于理解记忆,并且博客在代码拷贝学习方面更占优势。
看博客也有一些缺点:比如博客比较碎片化,体系不太完整。还有博客质量参差不齐差距较大,甚至有的博客还出现较大的错误,所以挑选好的博客是一大挑战。
总的来说,系统自学Java主力军还是 看视频和看书 ,可以以看视频为主,看书为辅,遇到疑难点不理解的可以通过搜索相关博客多看文章进行学习吸收。
为了方便你的学习,我贴心为你搜集了一波优秀的视频、书籍、播客,以及刷题网站和社区的列表清单,你可以慢慢“享用”。
图文类的教程网站:
菜鸟教程:
https://www.runoob.com/java/java-tutorial.html 教程免费,适合基础入门
W3Cschool:https://www.w3cschool.cn/ 教程免费,适合基础入门
易百教程:https://www.yiibai.com/ 教程免费,适合基础入门
How2j: https://how2j.cn/ Java基础到高级,还有各种框架、中间件教程
回车课堂:https://ke.boxuegu.com/ 以关卡形式教学,从基础到高级,文章内容质量比较高
书栈网:https://www.bookstack.cn/ 免费的在线电子书、笔记、文档网站
还有其他免费图文教程、个人站点的例如importNew ,我要自学网等也可看看。
视频网课网站:
动力节点:
http://www.bjpowernode.com/javavideo.html 有很多免费不错的课程
慕课网: https://www.imooc.com/ 有免费有付费
B站:https://www.bilibili.com/ 有"B站大学"美称
对于视频类教程网站,首推B站,很多培训机构会将部分高质量视频放到B站吸引用户,这些免费资源可以利用好,并且B站是个开放的平台,有很多up主会自己录一些视频讲解也是相当不错的。还有一些培训机构例如传智播客、尚硅谷、达内等可以到官网获取一些免费知识,还有一些课程网站例如腾讯课堂、潭州教育、拉勾、极客时间、蓝桥云课、开课吧等很多课程在刚开始推广期特别便宜可以入手一波学习。
当然,获取视频教程还有一个途径就是向别人要,很多公众号号主将资源分享在公众号后台可以免费获得,还有一些资源可以通过淘宝和咸鱼低价获取网盘资源,还是很值得。
刷题网站
力扣:
https://leetcode-cn.com/problemset/all/
牛客:https://www.nowcoder.com/
适用ACM选手的一些刷题网站:杭电oj、 Codeforce、 Vjudge 、Atcoder
Java开发也要刷题吗?那是肯定的,找工作无论大厂小厂(尤其大厂)避免不了笔试题,力扣和牛客上都有剑指offer,建议刷2-3遍,力扣hot100一定要刷一下,如果冲击大厂那一定要刷200道以上才行。
其他学习网站
csdn:https://blog.csdn.net/ 最大中文博客网站,结合搜索使用
博客园:https://www.cnblogs.com/ 老牌社区,依然有很多用户
知乎: https://www.zhihu.com/ 有很多高质量问答、文章、专栏
掘金:https://juejin.cn/ 社区较新,前端用户较多,内容质量相对较高
思否:https://segmentfault.com/ 文章内容质量不错,问答质量较高
github:https://github.com/ 全球最大开源社区,有非常多的开源项目
Stack Overflow:
https://stackoverflow.com/ 全球最大技术咨询交流平台
V2EX :https://www.v2ex.com/ 高质量交流社区
至于51CTO、Infoq、开源中国等社区内容质量也很高,但用户相对较少。这些学习网站和资源不向前两项介绍的知识成体系化,这些平台相对都是流动交互性很大,所以你需要找到适合自己的资源,要利用好搜索的功能,此外各平台你也可以关注觉得不错的博主阅读他的专栏文章,收益也是很大的。
推荐书籍
自学Java我推荐的书籍为《Java从入门到精通》,有案例、代码跟着学很容易懂。
当然被业界称为为四大名著书籍质量也不错:
《JAVA语言程序设计》----初级
《JAVA核心技术》卷I----初级、《JAVA核心技术》卷II----中级
《JAVA编程思想》----初级~中级
《Effective Java》----中级
在跟着书籍学习的时候,有困难的内容也可以先放一放,还有Java Swing等窗口应用部分也可跳过。这些书不需要全买,有一本工具书就足够了。
学习很容易遗忘,因此要时常回顾。不推荐视频作为长期回顾的方法,更推荐博客、纸质书回顾,因为它们可以快速定位,很多内容看一遍就想起来了。
除了回顾以外,交流可能是另一种锁住知识的好方法了,通过交流倾听别人的意见,能深入思考,加深对知识的理解。交流的方式和途径有很多
和身边人交流:最方便和高效的交流方式就是和身边同学、舍友、一起学习的人进行交流,一起学习进步共享学习的心得;
社群论坛交流:最大众化的就是添加一些QQ、微信的技术交流群或者在一些问答论坛交流,群中或者论坛中会有不少大神或者志同道合的人能够帮到你。作为技术人加几个技术社群、多逛技术论坛还是很有必要的。
当然还有一种方式并不一定适合所有人,就是和"自己"交流,将自己的学习内容重难点以笔记、文章形式输出出来,虽然这会耗费大量精力和时间,但这不断思考、优化、写的过程会使你对知识印象更深刻。
上面已经介绍了高效自学Java的关键点,下面来推荐实用的Java自学路径。
这个路径是我为你呕血整理而成,它结合我个人的自学经历与大牛的学习建议,避免了学习的坑。路径分为四部分:
学到第三阶段,就达到初级程序员的水平,可以找工作了。第四阶段——自我提升阶段——你的知识是Java高级和框架两部分里的需要深入学习的知识,你可以一边工作一边提升,其他内容是。
这里我推荐的自学路径,以视频为主。因为Java路径中的各个阶段相对独立,不必追求一家视频,但同一阶段建议看一家视频。
该阶段对应Java知识体系中的Java基础,方法为学习+刷题,每天学习8小时,推荐总时间控制在60天左右,推荐以视频为主,工具书为辅。
本阶段的学习推荐视频为回车课堂的《Java入门教程》(总时长约30小时)。看视频的时候1.5倍数看(看不懂可以倒回来多看几遍,最好不要原倍速看),遇到案例就暂停,自己动手跟着敲一下(划重点,跟着敲非常重要,看懂不等于真懂)。
看完视频,再看书上内容,推荐《Java从入门到精通》或《Java核心卷 Ⅰ》。如果对应的内容很容易懂那就说明学习的效果不错,如果不懂的话就多看书研究一下或者再找一些博客文章学习一下。书上的案例也要跟着敲写。
学完后,你还要检验自己学的怎么样,可以通过刷一些简单题来巩固。我建议到 杭电第11页或者C语言网去刷一些简单题检验自己,成功完成一道道题会让自己获得成就感,有继续学习的动力。
image-20210314200644136
在这个阶段,你可能学习了大量集合框架的使用,但是不了解为什么,比如很难理解为什么ArrayList查询快,LinkedList插入更快,这是因为你没有数据结构与算法的储备,所以在这一阶段的最后,你要补一补数据结构与算法的内容(第一遍学习以看和理解为主,不需要自己实现),这里我推荐王道考研数据结构视频和B站青岛大学王卓老师的数据结构与算法专栏,虽然这两个都是以C语言角度讲的,但是不妨碍你理解,如果有兴趣要动手实现各种数据结构与算法,可以到博客上查找实现方式。
在这个期间当然也要刷题了,但不推荐在杭电和C语言网刷题了,此时建议刷“剑指offer”上的题,剑指offer共计67题都是高频笔试面试题,并且有很多都和数据结构有关系。也许刚开始刷的时候会比较吃力,力扣 和牛客官网对应题目讨论区有很多优质讲解可以学习。
JavaWeb部分,每天学习8小时,建议控制时间在30天左右,推荐学习方式以视频为主,教程网站为辅。这部分内容虽然相对简单,但涉及到很多新的技术和概念需要时间吸收理解(例如HTML,JavaScript,CSS,JQuery,MVC,Ajax等)。学习JavaWeb推荐B站狂神JavaWeb入门到实战视频,大概25小时左右,同样也要倍速看。在学习JavaWeb的时候,会涉及一些其他领域的东西比如Html,JavaScript,CSS,MySQL等你不需要学的很深,先会一些基本的就可以。另外看视频的时候JSP部分可简略看,尤其是标签、EL表达式那块应用已经很少很少了,快速浏览即可。
JavaWeb部分,如果遇到一些错误很难解决跳过,可到Github找一些可运行的项目进行跑。有些东西不一定非要死扣,资源教程很多能跑出来对于初期才是最关键的。
学习JavaWeb除了跟视频外,也可以跟着教程网站或者博客专栏进行学习(例如菜鸟教程的Servlet),因为跟着教程网站在代码学习上效率较高,当然在学习别人代码的时候要有自己的创新。
学习JavaWeb 中Servlet/Jsp这部分内容的时候,除了要跟着教程的案例一个一个敲代码,最后一定要动手敲一个小网站,网站内容囊括 Servlet、jsp、Session、Cookie、JDBC、Ajax等相关技术,包含具体登录注册功能、文件上传下载功能、页面访问计数等功能,可以从网络上获取一些前端页面模板或者UI框架(推荐Layui或者EasyUI)进行修改。
框架学习+项目实战,每天学习8小时,建议控制时间在60天,推荐学习方式是视频+文档资料学习。
JavaWeb中Servlet/Jsp很少在企业直接使用,学习企业级开发框架才是重中之重,框架类如果单纯为了学习应用的话不要买书,因为主流框架技术更新迭代较快,大部分书籍跟不上技术的发展;如果为了深入理解框架设计、原理可以买对应框架的源码分析类书籍(要注意框架版本)。在寻找视频或者博客教程的时候要留意文章或者视频的发布日期,如果太早的话不建议观看。
在框架中,重中之重的是Spring、SpringMVC、Mybatis、SSM、SpringBoot等。学习顺序的话建议从Mybatis到Spring到SpringMVC,三个框架单独学完之后再进行整合SSM框架,利用SSM写一些小案例。之后学习SpringBoot,再利用SpringBoot完成实战项目巩固学习。
推荐狂神系列视频:
从学习框架开始,你就要学会阅读官方文档啦,因为一个开源框架之所以流行成功,和它的文档资料等都是密不可分的,官方文档是第一手高质量资料。可能有部分官方文档没有中文版本,因此需要你有一定英语水平或者使用翻译。这里提供一些优质的专栏、博客分享给大家:
除了以上框架,还要学习Java后端必学的安全框架(Shiro或者Spring Security,可以学习其一);Redis缓存,消息队列(选一种消息队列学习),后面有时间再学习其他中间件。
框架学习完,一定要多动手才能熟练掌握,如果你是学生可以根据课堂的任务或者学校的本创、大创写项目来提高熟练度并且不断拓展学习,如果你是非学生、非计算机专业没有项目条件,那你可以跟着项目实战教学视频去写项目巩固学习内容。
前面的内容学起来相对简单,是自学的核心内容,但是度过初期要学什么也要有个大概的了解,这里简单介绍一下并推荐部分书籍。
这部分的学习可能比起前面会枯燥一些,但想要变强突破初级的瓶颈就得沉得住气,静下心来学习。
在自学Java前或者自学中你会不会有这样的疑惑:
自学Java,学多久可以找到工作?
进大厂和进中小公司自学Java的侧重点有区别吗?
为什么学了那么久还只会“Hello World” ?
编程能力从什么时候开始突飞猛进?
以上选项无关对错,让我慢慢给你唠~
1 自学Java,学多久可以找到工作?
如果是小白的话,每天保证8小时以上的学习时间,达到Java初级程序员的水平最快也要6个月。前5个月正常学习Java技术,最后一个月准备简历以及面试。Java面试非常重要,要找一些面经将面试常考的问题搞明白。可以到牛客上看看别人的面试经验也可到Github上找一下面经(这里推荐JavaGuide(
https://github.com/Snailclimb/JavaGuide))。
2 进大厂和进中小公司自学Java的侧重点有区别吗?
大厂更重基础,需要你对学习的Java内容有透彻地理解,以及学习和理解数据结构与算法、操作系统、计算机网络、设计模式。而小厂更重项目和框架的使用。因此不同的定位,决定了在学习和面试准备的时候要有不同的侧重点。
还要提一点,大厂都注重编程能力,会笔试算法题,对应届生的要求更高,所以如果有条件的话一定要把剑指offer刷2-3遍,力扣最好能刷100题以上(学生的话刷200题以上)。
3 为什么学了那么久还只会“Hello World” ?
学那么久只会"Hello World"就是因为只看不练或者练少了。很多人在学习时眼高手低,不去敲代码或者只是copy一下执行,到后面碰到有难度的代码,就发现自己啥都不会。
解决这个问题一方面是学习途中遇到的案例都要动手敲;另一方面就是要刷题巩固,因为跟着案例,逻辑上还是有所依赖,但刷题时必须要自己充分思考才能通过。
所以自学Java,要一步一个脚印,每部分的案例都要动手去实现,并在实现的基础上去巩固和创新。
4 编程能力从什么时候开始突飞猛进?
编程能力的进步靠练习,一般突飞猛进会有两个阶段。
第一个突飞猛进就是学完Java基础部分。刷了100题左右,这时候遇到简单逻辑题都可以轻松解决,自己的逻辑能力、编程能力都有不错的提升,你会觉得自学Java这么久,努力没白费。
第二个突飞猛进的体会就是独立完成一两个项目的后端模块时。从搭建项目、到MVC分层编写业务逻辑代码会让学到的知识真正应用起来,自己会有点窃喜:哇,我自己也能写项目啦!这时候就是编程能力的第二次突飞猛进。
当然,后面可能也会因为一些其他原因让自己再次突飞猛进,但总的来说,想要突飞猛进,就要在短期内高强度学习、高强度敲代码。
通过上面自学Java的介绍,我想你对Java的学习方法和路线已经有所认识和掌握,通过一张表来复习一下。
学习路径 | 主要工作学习资源 | 建议学习方式 | 建议学习时间 |
Java基础学习阶段 | 1. 回车课堂的Java入门教程(链接) 2.王道考研数据结构视频和B站青岛大学王卓老师的数据结构与算法专栏 | 视频为主,工具书为辅+刷题 | 60天左右 |
JavaWeb学习阶段 | B站[狂神JavaWeb入门到实战视频] | 视频为主,教程网站为辅 | 30天左右 |
框架学习阶段 | 狂神系列视频+官网文档+项目视频 | 视频+文档资料学习 | 60天左右 |
自我提升阶段 | 并发编程+JVM+MySQL+设计模式等书籍 | 书籍 | —— |
如果你觉得自己适合自学Java,必须要鼓足干劲一鼓作气!自学前先了解Java知识体系,掌握一些学习资源和方法,学习过程一定要多敲代码、多回顾交流。
IT界经常流传这么一句话:"talk is easy,show me the code"。自学Java,就是学会写代码,多多练习是非常非常重要的。之后的锦上添花是懂原理,但深入理解原理是一个任重而道远的过程。
加油吧后浪!
原创不易,还请关注、点赞、转发支持一下!我是程序员bigsai。