乐趣区

2018年如何快速学Java

前言
只有光头才能变强
提前预警:本文适合 Java 新手阅读(老手可在评论区给下建议),希望大家看完能有所收获。
一、为什么我要写下这篇文章
1.1 直接缘由:

在今天 (2018 年 11 月 4 日) 有个同学给我发微信找我

同学:能不能给他一个网页他改一下,他想参考一下,然后用于做毕业设计。
3y:可以啊,你的题目是什么啊?想用 Java 来写吗?
同学:对啊,我现在在学 Java 呢(ps: 之前跟该同学聊天的时候 ” 我看着这些代码就头晕,我对电脑真不感兴趣 ”…. 真香!)
随后这个同学发了一个小视频过来,说自己在学 Java。我看了一下:大概是在练习 &^| 这些操作符。

最后,我告诉这同学:” 你去找视频看吧,你现在学这些对你的毕业设计没有什么帮助的啊 ”。然后让他去 B 站找视频看了
ps: 我并不是说学 &^| 这些运算符是没用的,但如果单纯是想自己用 Java 来写毕业设计的话,这些知识点应该是用不上的。
1.2 间接缘由:
自身经历:
我学习 Java 也是自学的,在大学期间也是一直一个人在学(身边的同学可能家里有矿)。即便我在学习的时候也去搜了不少的意见,例如在知乎上找 <Java 如何快速入门 >,<Java 应该怎么样学?>,< 给刚开始学 Java 的年轻人一些建议 > 等等类似的话题,但是现在回过头来看,我还是走了不少的 ” 弯路 ” 了。
比如说,当时我花了蛮多的精力去学 JSP,最后整理成博客发到网上去。网友的评论:

“不玩 JSP 十几年了“。
“jsp 不是老掉牙的技术吗”。
“看这个有一种穿越的感觉……码了 6w 多字,看着就心疼……”。
“这十年前的技术都被挖出来了?”
“刚毕业时写过好几个自定义标签,那时候感觉好有成就感,但是现在,用于 view 的 jsp,似乎有点过时了,view 一般用【模板】或者【完全静态 + ajax + json】了”

嗯 … 那篇文章我当时在 2018.02.07 发布。我学 JSP 的时候是在 2017 年初吧,其实在 2017 年 JSP 也已经是落后的技术了,但我还是花了不少的时间去学习 JSP 的各种用法(自定义标签,JSTL,EL 表达式等等)。
网友们其实说得都没有毛病,对我来说:在 2017 年花了不少时间去学如何使用 JSP(过期的技术),这就是我认为的 ” 弯路 ”。
ps: 在 2018 年花点时间了解 JSP 是没毛病的,但深入学习的话是没必要的。
“ 弯路 ” 说明:如果你有充裕的时间,怎么学都不是事,毕竟你是真真正正地在学编程。只要在学编程,就不是弯路,最怕你不学。

以这篇文章回复我部分的读者:
写博客以来,还是有部分读者是零基础学 Java 的,有转行的、也有年轻的师弟师妹的。一般他们也问我应该怎么学 Java 比较好,学习 Java 的路线应该是怎么样的。
emmmm,我一般都是比较简单的回复一下:让他们多做笔记啊,接下来应该花时间学什么,不学什么 … 就完了..
所以,写完这篇文章,遇到再问我如何学习 Java 的时候,我直接发个链接就完事了(懒人必备)..
1.3 目的
如果你:

想要用 Java 在短短的几个月时间内写出自己的毕业设计。
想要用 Java 体验一下如何从零搭建一个属于自己的网站。

那么可以看一下我下面所写的不成熟的建议。
二、如何快速学 Java
这里我以 Java EE(Jakarta EE)/Java Web 的经验来说哦。(都把你们看做是零基础入门的了)
学习 Java EE(Jakarta EE)总体来说会有以下三大模块:

Java
数据库
Web 前端

在我看来,无论学习什么技术都好,在学习该项技术的细节之前都得知道:这项技术是什么,为什么我要学习这项技术,学习了这项技术有什么好处。

看似好像我在说多余的话,但如果你在学习某项技术的时候无法回答上面的三个问题。再过几天,你很大程度上会忘记这项你所“学过”的技术。
比如说,如何你连“为什么要用多线程”你都无法用通俗的话来解释清楚。即便你当时学习的时候知道多线程可以用 xxx 方式来创建,多线程的 xxx 的 api。那再过两个月,人家问你”Java 多线程有什么用啊?”。你想想你还能答什么,我认为你是记不住“多线程可以用 xxx 方式来创建、多线程的 xxx 的 api”这些知识点了。
再比如说,如果学习 Spring 时不知道 IOC 和 new 对象有什么区别,那我为啥不直接 new 对象而要那么麻烦去学 Spring 呢?

简单来说:如果你不知道学习某项技术是干嘛用的,那先不要学。

如果你是零基础学习 Java 并理解力不是爆棚的话,我建议以视频学习为主。
可能你会看到这样类似的言论:

“看视频学习太慢了”
“直接看源码啊,源码就是最好的解释”
“有问题直接 Google 啊,用什么百度”
“最好的资料是官网文档”
…..

但是,那都是对有经验的人或者高智商的人群来讲的。
如果是零基础普通人,看视频学习 / 看不懂源码 / 用百度 / 看中文博客来学习不丢人。
ps: 如果看的视频讲师的语速不是特别快,建议以 1.5 或者 1.75 倍速观看。
2.1 关于视频资源
我在学习 Java 的时候也收集了很多的视频资源,并不是每个都有看过。只是在混群的时候发现有人发了,就复制下来整理一下罢了。
https://github.com/ZhongFuCheng3y/3y/blob/master/src/resource.md

其他的视频资源:

B 站:(bilibili.com)一个神奇的网站。如果你想看哪个视频,可以先搜一下 B 站有没有。
慕课网:(imooc.com)里头也有挺多的视频资源。
公众号 / 混 qq 群 / 微信群:不少人手里都有几 t 的资源,如果跟群友的关系不错,一般都会免费给你发的
……

2.1 学习 Java 基础
零基础学习 Java 的路线我简单总结为以下:

首先去官网下个 JDK,按现在常用的版本 JDK1.8 就够学习了
下载地址:JDK1.8 下载:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

随后去下载现在 Java 常用的编辑器 IDEA(也可以用 eclipse,但现在 IDEA 的确是好用)..
下载地址:IDEA 下载:https://www.jetbrains.com/idea/

以 1.5/1.75 倍速观看 Java 基础视频(以刘意为例)

在学习 Java 基础时,我简单来说一下什么东西可以不碰:

&^| 位运算符,++ i 和 i ++ 类似这种绕死人的语法
内部类
AWT,SWING 编程
注解

需要深入理解的知识点:

流程控制
面向对象的概念

Java 语法
this 指针、重写和重载、final、static 等等这些基础的东西

集合(包括泛型)
常用的集合类

IO 流
IO 流代码的编写

(理解这些知识点,能够在有提示的情况下码出代码,但不要为了一些细节钻牛角尖)

简单过一遍的知识:

异常
多线程
网络编程
反射机制
(你得知道这个知识点是干嘛用的,为什么要学这个知识点,能看懂具体的代码!)

对于上面所说深入理解的知识点,我个人是非常建议在学习期间写笔记 (博客) 的。如果你想写笔记的话,最好直接就用 markdown 语法来编写,而不是用 word/ 简单的记事本。
markdown 语法非常好学,几分钟跟着就可以学习了,几乎所有的 it 博客网站都支持 markdown:
markdown 学习:https://www.jianshu.com/p/q81RER

如果喜欢画思维导图的,我这里推荐 processOn 就可以了。无需下载 Xmind 这么麻烦了:
ProcessOn 来画思维导图:https://www.processon.com/i/5815483ce4b0baccb2d1f8c6

有的时候并不需要使用 IDEA 打开一个.java 或者.xml 这样的文件,可以使用 notepad++ 记事本:
NotePad++ 记事本:https://notepad-plus-plus.org/

学会科学上网和使用 Chrome 浏览器,比如说下载拦截广告插件,英语翻译插件

Chrome 浏览器:https://www.google.com/chrome/

拦截广告插件:https://chrome.google.com/webstore/search/uBlock%20Origin?hl=zh-CN&_category=extensions

英语翻译插件:https://chrome.google.com/webstore/search/%E6%B2%99%E6%8B%89%20%E6%9F%A5%20%E8%AF%8D?hl=zh-CN

虽然是快速学习 Java,但学完上面的估计得一个月了(:..
一个月发现都是面向控制台编程(console),输入输出一些数据来玩。

期间可能就学习 IO 的时候可以复制文件,修改文件名有点意思。但好日子就要来临了!
2.2 学习 Java Web 基础
首先我们可以学习一下 Web 前端的知识(此部分都简单过一下就好了)

HTML/CSS/JavaScript/jQuery

CSS 框架(都有中文手册,很快就上手了,选一个自己喜欢的就好了):

BootStrap:http://www.bootcss.com/

Materialize:http://www.materializecss.cn/

到目前为止,学完上面这些可以搭建“能看”的静态网页了。曾经看过一段话来总结上面的技术:
“HTML 是名词,CSS 是形容词,JavaScript 是动词”
随后学习 JavaWeb 的路线如下:

Tomcat(简单过一下)
XML/ 注解(简单过一下)
Servlet(重点理解)
HTTP 协议(重点理解)
Filter 过滤器(重点理解)
Listener 监听器(简单过一下)
JSP(简单过一下)
AJAX、JSON(简单过一下)

基于上面的学习,起码已经可以使用 request 对象来接收前端发送过来的数据,使用 response 对象将 Java 后端的数据返回给前端,使用 Filter 拦截器来处理中文乱码问题(Tomcat 默认的编码是 ISO-88591)。总的来说已经可以实现前后端交互了!
2.3 学习数据库
数据库这里指的是关系型数据库,一般我们以 MySQL 来入门就足够了。
在学习期间,其实很多时间都耗费在配置环境上面,比如我之前安装 JDK,安装 MySQL,安装 Oracle 就耗费了不少时间。后来我也将其写成博客,需要重新安装的时候翻一下博客就好了。
比如 MySQL 安装教程:https://segmentfault.com/a/1190000013530782

主要学习 SQL 的基本使用吧:

创建表(create table)
增删改查(insert,delete,update,select)
对于存储过程、触发器这些了解一下即可
对于索引、锁后面再学(此部分很重要,但以快速入门来说,可以先不看)

2.4 学习 Java 连接数据库(JDBC)
到这里,我们 Java Web、数据库、Web 前端的基础都已经基本学完了,但此时 Java 和数据库是相互独立的。我们想要以程序的方式来对数据库的数据进行操作,那就要学习一下 Java 连接数据库(JDBC)。
JDBC 这项技术并不难呀,就是模板代码,来来去去就几个步骤:

导入 MySQL 或者 Oracle 驱动包
装载数据库驱动程序
获取到与数据库连接
获取可以执行 SQL 语句的对象
执行 SQL 语句
关闭连接

由于这些代码可能会重复出现,那我们可以学习一下 DbUtils 这个组件:可以帮我们减少编写 JDBC 的模板代码。
2.6 项目管理和框架的学习
经过上面的学习,已经是可以在本地写一个 Web 项目了。

页面框架使用 BootStrap/Materialize 框架来搭好
请求处理交由 Servlet,返回的数据可以通过 AJAX 或者使用 JSP,DAO 层可以使用 DbUtils。
数据保存在 MySQL 中

为了让写代码变得更爽,我建议用半天学一下 Maven(项目管理工具),用几天学一下 SpringBoot。
从 Servlet 直接跳到 SpringBoot 可能有点难理解,但多搞几天我相信还是可以的..
2.7Linux 学习
最后,我们在本地上写完的项目想要让其他人都看得见,一般都会部署在 Linux 环境下的。(此部分的学习可以等到将项目写完,想要部署项目才学习)
我是不推荐使用虚拟机再搞 Linux 的,直接买一台方便很多

如果是学生的话,一个月的学生版也就 10 块一个月。
如果是转行的大哥话,现在阿里云双十一有优惠,买起来就很便宜了。

优惠链接:https://m.aliyun.com/act/team1111/#/share?params=N.FF7yxCciiM.pfn5xpli
三、总结
总结一下我认为学习 Java 的路线:

Java 基础 –> 流程控制 –> 面向对象(包括 Java 语法)–>Java 集合 –>Java IO 流 –> 异常 –> 多线程 –> 网络编程 –> 反射
JavaWeb 基础 –>HTML/CSS/JavaScript/jQuery–>Tomcat–>XML/ 注解 ->Servlet–>HTTP–>Filter 过滤器和监听器 –>JSP–>AJAX/JSON–> 数据库(MySQL)–>JDBC 和 DbUtils
项目管理和框架 –>Maven–>SpringBoot
Linux 基本命令

最后我们的项目是这样的:

以 Maven 来管理我们的项目
前端通过 BootStrap 来搭建页面框架
SpringBoot 来搭建 Java 后端环境,SpringMVC 处理前端请求(SpringBoot 整合了)
DAO 层使用 DbUtils 组件来完成,MySQL 作为数据库

当然了,我的 Java 路线不一定就是对的,我这里只是给出一种路线。
再次说明:这套路线是以“快速”学习 Java 的,如果你想要找到一份好工作,上面的知识点是不够的!
如果是你,你会给出一条怎么样的 Java 路线?不妨在评论区留言~~
一个坚持原创的 Java 技术公众号:Java3y,欢迎大家关注
3y 所有的原创文章:

文章的目录导航(脑图 + 海量视频资源):https://github.com/ZhongFuCheng3y/3y

退出移动版