2018年如何快速学Java

前言

只有光头才能变强css

提早预警:本文适合Java新手阅读(老手可在评论区给下建议),但愿你们看完能有所收获。html

1、为何我要写下这篇文章

1.1直接原因:

  • 在今天(2018年11月4日)有个同窗给我发微信找我
    • 同窗:能不能给他一个网页他改一下,他想参考一下,而后用于作毕业设计。
    • 3y:能够啊,你的题目是什么啊?想用Java来写吗?
    • 同窗:对啊,我如今在学Java呢(ps:以前跟该同窗聊天的时候"我看着这些代码就头晕,我对电脑真不感兴趣"....真香!)
    • 随后这个同窗发了一个小视频过来,说本身在学Java。我看了一下:大概是在练习&^|这些操做符。

同窗发过来的小视频图--截取

最后,我告诉这同窗:"你去找视频看吧,你如今学这些对你的毕业设计没有什么帮助的啊"。而后让他去B站找视频看了前端

ps:我并非说学&^|这些运算符是没用的,但若是单纯是想本身用Java来写毕业设计的话,这些知识点应该是用不上的。java

1.2间接原因:

自身经历:linux

我学习Java也是自学的,在大学期间也是一直一我的在学(身边的同窗可能家里有矿)。即使我在学习的时候也去搜了很多的意见,例如在知乎上找 ,<Java应该怎么样学?>, <给刚开始学java的年轻人一些建议> 等等相似的话题, 可是如今回过头来看,我仍是走了很多的"弯路"了。 git

好比说,当时我花了蛮多的精力去学JSP,最后整理成博客发到网上去。网友的评论:github

  • “不玩 JSP 十几年了“。
  • “jsp不是老掉牙的技术吗”。
  • “看这个有一种穿越的感受……码了6w多字,看着就心疼……”。
  • “这十年前的技术都被挖出来了?”
  • “刚毕业时写过好几个自定义标签,那时候感受好有成就感,可是如今,用于view的jsp,彷佛有点过期了,view通常用【模板】或者【彻底静态 + ajax + json】了”

JSP博文

嗯...那篇文章我当时在2018.02.07发布。我学JSP的时候是在2017年初吧,其实在2017年JSP也已是落后的技术了,但我仍是花了很多的时间去学习JSP的各类用法(自定义标签,JSTL,EL表达式等等)。web

网友们其实说得都没有毛病,对我来讲:在2017年花了很多时间去学如何使用JSP(过时的技术),这就是我认为的"弯路"ajax

  • ps:在2018年花点时间了解JSP是没毛病的,但深刻学习的话是不必的。

"弯路"说明:若是你有充裕的时间,怎么学都不是事,毕竟你是真真正正地在学编程。只要在学编程,就不是弯路,最怕你不学。chrome


以这篇文章回复我部分的读者:

写博客以来,仍是有部分读者是零基础学Java的,有转行的、也有年轻的师弟师妹的。通常他们也问我应该怎么学Java比较好,学习Java的路线应该是怎么样的。

emmmm,我通常都是比较简单的回复一下:让他们多作笔记啊,接下来应该花时间学什么,不学什么...就完了..

因此,写完这篇文章,遇到再问我如何学习Java的时候,我直接发个连接就完事了(懒人必备)..

1.3目的

若是你:

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

那么能够看一下我下面所写的不成熟的建议

2、如何快速学Java

这里我以Java EE(Jakarta EE)/Java Web的经验来讲哦。(都把大家看作是零基础入门的了)

学习Java EE(Jakarta EE)整体来讲会有如下三大模块:

  • Java
  • 数据库
  • Web前端

数据库、Java、Web前端

在我看来,不管学习什么技术都好,在学习该项技术的细节以前都得知道:这项技术是什么,为何我要学习这项技术,学习了这项技术有什么好处

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

简单来讲:若是你不知道学习某项技术是干吗用的,那先不要学


若是你是零基础学习Java并理解力不是爆棚的话,我建议以视频学习为主。

可能你会看到这样相似的言论:

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

可是,那都是对有经验的人或者高智商的人群来说的。

若是是零基础普通人,看视频学习/看不懂源码/用百度/看中文博客来学习不丢人

ps:若是看的视频讲师的语速不是特别快,建议以1.5或者1.75倍速观看。

2.1关于视频资源

我在学习Java的时候也收集了不少的视频资源,并非每一个都有看过。只是在混群的时候发现有人发了,就复制下来整理一下罢了。

视频资源

其余的视频资源:

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

2.1学习Java基础

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

刘意视频

在学习Java基础时,我简单来讲一下什么东西能够不碰

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

须要深刻理解的知识点:

  • 流程控制
  • 面向对象的概念
  • Java语法
    • this指针、重写和重载、final、static等等这些基础的东西
  • 集合(包括泛型)
    • 经常使用的集合类
  • IO流
    • IO流代码的编写
  • (理解这些知识点,可以在有提示的状况下码出代码,但不要为了一些细节钻牛角尖)

简单过一遍的知识:

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

对于上面所说深刻理解的知识点,我我的是很是建议在学习期间写笔记(博客)的。若是你想写笔记的话,最好直接就用markdown语法来编写,而不是用word/简单的记事本。

markdown语法很是好学,几分钟跟着就能够学习了,几乎全部的it博客网站都支持markdown

若是喜欢画思惟导图的,我这里推荐processOn就能够了。无需下载Xmind这么麻烦了:

有的时候并不须要使用IDEA打开一个.java或者.xml这样的文件,可使用notepad++记事本:

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

虽然是快速学习Java,但学完上面的估计得一个月了(:..

一个月发现都是面向控制台编程(console),输入输出一些数据来玩。

控制台

期间可能就学习IO的时候能够复制文件,修改文件名有点意思。但好日子就要来临了

2.2学习Java Web基础

首先咱们能够学习一下Web前端的知识(此部分都简单过一下就行了)

到目前为止,学完上面这些能够搭建“能看”的静态网页了。曾经看过一段话来总结上面的技术:

  • HTML是名词,CSS是形容词,JavaScript是动词

随后学习JavaWeb的路线以下:

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

Servlet知识点

基于上面的学习,起码已经可使用request对象来接收前端发送过来的数据,使用response对象将Java后端的数据返回给前端,使用Filter拦截器来处理中文乱码问题(Tomcat默认的编码是ISO-88591)。总的来讲已经能够实现先后端交互了

2.3学习数据库

数据库这里指的是关系型数据库,通常咱们以MySQL来入门就足够了。

在学习期间,其实不少时间都耗费在配置环境上面,好比我以前安装JDK,安装MySQL,安装Oracle就耗费了很多时间。后来我也将其写成博客,须要从新安装的时候翻一下博客就行了。

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

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

MySQL基本语法

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

3、总结

总结一下我认为学习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全部的原创文章:

相关文章
相关标签/搜索