零基础如何入门Java?
最近刷知乎,总能看到有小伙伴在问0基础如何学Java?,转行学Java该怎么学?,Java学到什么程度可以找工作? 这类的问题,所以我想就我的经验来谈一谈。
先说下Java的学习路线:
Java SE -> 数据库(Mysql) -> 前端(Html、Css、JavaScript) -> Java EE -> 企业开发框架(Spring、Spring MVC、Mybatis、Spring Boot)
这是一个学习Java后端开发最基本路线,无论是自学还是报班培训,都是这个流程,学完就可以找工作了。
我曾经因为感兴趣自学过,后来打算转行又报了培训班,所以我分别来说说我对自学和报培训班学习的看法。
自学
很多没有接触过编程的小伙伴都会有这样的疑问:Java能不能自学?
我的答案是肯定的:能。
如果是自学能力强、自律的小伙伴,那完全可以自学。你在培训班能学到的知识在网上都能很轻松地找到。
只要按照上面的学习路线找相应的视频教程学习,并且掌握到一定程度,就可以找到工作。具体要掌握到什么程度,最后再说。
先说下在哪学?
我推荐到B站,B站的Java视频资源非常多,我现在学一些新技术的时候,也会到B站找教程。
其次是慕课网,慕课网大多数的教程都是收费的。
我主要是通过以上两个平台学习(P.S. 这不是打广告哈,打广告也没人给我钱😆)。
再说下自学的弊端。
自学也有弊端,就是很难保证自己的学习的进度,尤其是在初期学习阶段,即便你清楚地知道学习路线。
自己学习时,很难做到全神贯注地跟着视频学习,注意力容易分散。有时,自己在练习敲代码的时候,不知不觉就敲了很长时间,视频进度始终停滞不前,最后可能一个月了JavaSE都没有看完。
所以,在学习的时候,一定要规划好学习的进度。学习路线可以让小伙伴知道学Java该学什么,但是把握进度还要看自己。
一般JavaSE的视频教程在十几到几十个小时不等,在选择教程时尽量先多点几个进去听一听,货比三家嘛。找一个声音听着不错的老师,这样学起来起码能事半功倍,有的视频看一会儿就不想看了,这种肯定不会有益学习。
还有一点是不宜选择时间过长的视频,有的教程几十甚至几百个小时,这种最好是不要选了。凭我的经验,任何一门技术的视频教程在10-15个小时之间最合适。
选择好教程后,根据教程的时长给自己制定一个学习计划,假设一个15小时的JavaSE教程,一天看3个小时,其余时间用来练习和消化,一周就把JavaSE攻克了。
学习一门技术,一定要一口气儿拿下它,千万不要拖拖拉拉,代码一天不敲,学过的东西都可能会忘。我们学习的目的很明确,就是为了赶紧学完赶紧找工作,时间拉得越长,后劲儿就越不足,可能学到一半就放弃了。
培训班
我报培训班的目的很明确,为了快速转行。
我喜欢和别人比着学,这也是当初我认为报班学肯定能学成的原因,事实也证明了这一点。
知乎上有的小伙伴问过一些问题,我总结了一点:
- XX岁转行可以吗?
- 怎么选择培训机构?
- Java学到什么程度可以找工作?
我围绕这几点说一下。
我是26周岁转行的(虚岁28)。我当时都感觉我已经是大龄了,班级里30多个同学清一色都是应届生,也有跟我年龄差不多的,还有一个31岁大哥。
所以说,年龄不是问题,只要心不老,干啥都不晚。总比到了30多岁的时候再说,我当初学Java好了。
选择培训机构时,一定要选择大型的培训机构。
有的小机构打着招聘的幌子招生,套路频出,说要岗前培训几个月,然后每个月给你提供多少钱的生活费,然后等你工作的时候要从工资扣XX钱,必须在公司干满XX年等等。
大型机构相对还是有保证的,具体去哪一家我就不推荐了。
最后,具体说说Java每个阶段都要掌握到什么程度,这个是很多人都关心的话题。
Java SE
Java SE,学完JavaSE要掌握Java的基础语法,包括:
- 基本数据类型(8种)
- 运算符
- 控制流程(条件、循环)
- 数组(Java最基本的数据结构)
- 面向对象的编程思想
- 什么是类,什么是对象(类是对象的抽象,对象是类的实例)
- 封装、继承、多态
- 常用的类库,如String、基本数据类型的包装类
- 集合
- Collocation接口:ArrayList(数组实现)、LinkedList(链表实现)、HashSet(HashMap)
- Map接口:HashMap
- 迭代器
- 异常(类别,以及如何处理异常、自定义异常)
- 多线程、IO流(先了解即可)
Swing图形化(不学)
数据库
数据库学习Mysql,要掌握:
- Mysql的数据类型
- 数据库创建、数据表创建
- 约束
- 了解三大范式
- 增删改查语句
- 关联查询
- 视图
- 数据库事务
初学时,先不要直接使用数据库客户端,最好是先使用命令行。
最主要的还是要掌握增删改查操作,尤其是查询,会涉及到多表的查询。
学完Mysql,紧接着要学习JDBC,即Java Database Connectivity
,它是Java用于连接和操作数据库的接口(interface
),但Java并不提供具体的实现,而Mysql提供了JDBC的具体实现,即数据库驱动
,从而实现Java操作Mysql数据库。不同的数据库(Mysql、Oracle...)都有各自的数据库驱动,所以我们在编程时无需关心操作的具体是什么数据库,我们只面向JDBC接口,这就是面向接口编程
。
学完了Java SE,了解了面向对象,我们知道Java多态性的体现之一就是接口,在之后的开发中,很大程度也都是面向接口编程,结构分层,从而实现了代码间的弱耦合,提高代码的健壮性,也更容易维护。
JDBC这块要掌握:
- 如何在项目中引入JDBC、数据库驱动
- 知道JDBC常用的对象,并且要实现对数据库的增删改查操作
虽然后面会接触到Mybatis框架,它让我们更容易的使用数据库,但是基础还是要学的。
前端
前端不是重点,但是也不能一点儿都不会。
- 前端三大件:Html、Css、JavaScript
- Vue
- 知道Vue对象的生命周期,掌握生命周期钩子函数
- Vue指令
- 计算属性、监听器
- 条件、循环
前端部分跟着视频学一遍即可,不需要精通,但起码要能看懂代码。
Vue是目前比较主流的前端框架,基本的语法要能看懂。
日后工作中,即便不能独立完成前端任务,但是复制个页面,改一改的能力还是要有的。不会这些,搬砖都没法搬,上网查问题都不知道该问啥。
Java EE
学到这里,我们才真正步入了Java Web开发的大门。这里要掌握:
- 会使用Tomcat
- 了解Servlet
- 了解Http协议
- 掌握Servlet中的Request、Response对象,以及它们的常用方法
- 掌握会话技术,Cookie、Session
- 监听器和过滤器
- JSP了解即可
学了Servlet可以让我们能知道Java是如何来处理Http请求的,Request、Response、会话一定要掌握。
企业开发框架
Mybatis
Mybatis是目前操作数据库的主流框架,学完要掌握:
- 掌握Mybatis常用配置
- 实现增删改查,尤其是多表查询、高级映射
Spring
有人说,Spring框架
是Java企业开发的春天,它的作用是简化企业级开发的复杂度。
Spring在项目里也被形象地称作Spring容器
,它可以整合任意框架,并且管理着各种我们需要用到的对象以及对象之间的依赖关系,就像一个大容器一样。Spring还给这些对象起了一个非常好听的名字,Bean,也有人叫它bean对象
。
学习完Spring,要掌握:
- 理解IoC控制反转,以及面向切面编程AOP,这两个是Spring的核心
- 掌握Spring的配置,如何配置bean对象,适合依赖注入,掌握常用的注解
Spring MVC
它为Spring提供了处理Web的能力,学完要掌握:
- 了解Spring MVC的处理流程
- Spring MVC的配置
- 常用注解
最后,要能够独立从零搭建一个SSM项目。
Spring Boot
目前SSM这种组合已经不再流行,新的项目开始使用Spring Boot
框架开发。
Spring Boot
是Spring快速开发脚手架,当学完SSM之后,我们发现Spring在整合Mybatis、Spring MVC以及其他第三方组件时需要写大量的配置文件,这非常麻烦还容易出错、不好维护,这在企业开发中更是让人头疼。
Spring Boot
的诞生就是为了解决这一难题,每一个技术之所以能够流行,必然是为了解决某些重大的难题。当然,Spring Boot的强大远远不止于此。
当我们动手搭建配置一个SSM项目,可能需要花费大约半个小时的时间。但我们创建一个Spring Boot项目并整合Spring MVC、Mybatis只需要几分钟的时间。
学完Spring Boot,要掌握:
- 如何创建Spring Boot项目,整合Spring、Mybatis,以及常用的注解
找工作
掌握以上内容,仅仅是一名程序员职业生涯的开始,这些只是入门的最基本要求而已。
找工作,碰壁几家别灰心,心态一定要稳,找工作时运气也占了很大一部分。
无论是应届还是转行,都是从零开始,第一份工作,别太看重工资,找到工作才是真格的。
当找到工作入职后,我们会接触到真正的项目,可能会手足无措、无从下手、压力很大、焦虑,但这些都是正常现象,不出一个月,你就能上手,放心大胆地干吧。