2020最新全面Java学习路线及视频(万字长文)
声明,本人能力有限,只是列出来参考,不对之处欢迎指正。
一门永不过时的编程语言——Java 软件开发。
Java编程语言占比:
据官方数据统计,在全球编程语言工程师的数量上,Java编程语言以1000万的程序员数量位居首位。而且很多软件的开发都离不开Java编程,因此其程序员的数量最多。而在以Java编程为核心的开发领域中,javaEE程序员的需求量10年来一直居于首位!
Java工程师就业:
1.通过各大招聘网站统计,全国海量公司都在招聘Java开发工程师
2.北京Java开发工程师平均薪资,即19208元
3.全国Java开发薪资前三:北京 上海 深圳
Java到底学什么?
很多人可以刚学完Java时完全不知道Java的结构是怎样的,导致学习的知识点零星、散落,这也是为什么明明很基础的内容,但是一段时间之后自己却想不起来是怎么写的。没有梳理知识的脉络,将所学打通,融汇于一处。废话了一通。
Java学习路线
共细分16个部分
第一阶段_java开篇
第2阶段 :JAVA语言语法
第3阶段:集成开发工具的使用
第4阶段:面向对象
第5阶段:JavaSE进阶学习
第6阶段 :数据库+JDBC
第7阶段 :前端精讲
第8阶段 :算法篇
第9阶段 :JavaEE
第10阶段 :工具的使用
第11阶段 :Linux
第12阶段 :SSM框架的使用
第13阶段 :SpringBoot的使用
第14阶段 :面试篇
第15阶段:微服务阶段
第16阶段:分布式
第一阶段_java开篇
java初步 计算机语言的发展历史
程序中常见错误
编译方式扩展:classpath环境变量
扩展 :JAVA_HOME 环境变量
API
代码量统计工具的使用
单行注释和多行注释
文档注释
反编译工具的使用
本章最后一段代码
扩展面试题 :JDK ,JRE
JAVA简史
JAVA体系结构
JAVA特性和优势
JAVA核心机制之垃圾收集机制
核心机制之 JAVA跨平台原理
JAVA核心机制之对比C语言的跨平台原理
JAVA常用的DOS命令
notepad++的安装
第一段程序_ 编译 _执行
学习视频私信“学习”免费领取
第2阶段 :JAVA语言语法
数据类型 标识符
关键字
常量_字面常量
变量的声明,赋值,使用 (重要
变量的内存(重要)
变量的作用域
基本数据类型之整数类型变量
基本数据类型之浮点类型常量的两种形式
基本数据类型之浮点类型变量
基本数据类型之字符类型(1-2)
解释乱码问题
基本数据类型之布尔类型
基本数据类型转换问题
习题:fifinal_字符常量
习题 _ 加深对Scanner的使用
运算符
JAVA中的运算符概述
算数运算符_除法 _取余
算数运算符_加号
算数运算符 _自增
赋值运算符
扩展数值运算符
关系运算符
逻辑运算符
三元运算符
位运算符
运算符_总结
运算符的优先级别
流程控制
引入
分支结构_if单分支
分支结构_if多分支
随机数
分支的嵌套使用_练习1
分支的嵌套使用_练习2
分支结构_switch分支
循环结构_while循环
循环结构_while循环练习
循环结构_do-while循环
循环结构_for循环
循环结构_关键字break
循环结构_关键字continue
循环结构_循环练习
循环结构_循环嵌套
学习视频私信“学习”免费领取
阶段项目:小鲨鱼记账软件
引入
项目最终效果演示
整体结构完成
登记收入
登记支出
收支明细错误细节
退出功能
学习视频私信“学习”免费领取
方法的定义,调用,重载
方法的定义和调用
方法提取的练习
面试题 _两个数交换是否成功
方法的重载
数组
数组的引用
数组的学习
数组习题完善_数组的遍历方式
数组的三种初始化方式
数组的应用_最值问题
数组的应用_查询问题
数组的应用_添加元素
数组的应用_删除元素
详述main方法
可变参数
Arrays工具类的使用
数组的复制
二维数组的定义和遍历
二维数组的初始化方式
阶段项目:双色球彩票模拟系统
需求介绍
涉及技能点
项目演示
菜单展示
购买彩票
开奖整体结构完善
生成中奖单号细节
对比号码细节和完善
学习视频私信“学习”免费领取
第3阶段:集成开发工具的使用
IDEA的基本使用教程
IDE的概念
JetBrains公司介绍
Intellij IEDA介绍
IDEA的下载_安装前的准备工作
IDEA的卸载
IDEA的安装和破解
IDEA页面展示
Module 的概念和使用
IDEA的常用设置
IDEA的常用快捷键
代码模板是什么
常用的代码模板
修改代码模板
创建代码模板
断电调试_常用断点调试快捷键
断点调试_条件判断
断点调试_查看表达式值
创建JavaWeb项目
在IDEA中添加Tomcat的镜像
在IDEA中配置Git
在IDEA中配置Maven
第4阶段:面向对象
面向对象
面向对象_面向过程和面向对象的区别
面向对象_类和对象的关系
面向对象_面向对象三个阶段
面向对象_创建类
面向对象_创建对象
面向对象_局部变量和成员变量的区别
面向对象_构造器
面向对象_构造器的重载
面向对象_内存分析
面向对象_this的使用
面向对象_static修饰属性
面向对象_static修饰方法
面向对象_代码块
面向对象_ 包 _import _
封装
封装的总结
继承的引入
继承的代码演示
继承总结
继承的内存分析
权限修饰符
方法的重写
super修饰属性 ,方法
super修饰构造器
super修饰构造器补充
继承条件下构造方法的执行过程
Object类的toSring方法
Object类的equals方法(1)
Object类的equals方法(2)_ instanceof
Object类的equals方法(3)
类和类之间的关系1
多态
多态内存分析
向上转型_ 向下转型
简单工厂设计模式
fifinal修饰符
抽象类_抽象方法
接口(JDK1.8之前)
接口(JDK1.8之后新增)
内部类_ 成员内部类
内部类_ 局部内部类
阶段项目:比萨点餐系统
项目需求
项目结构分析
父类子类创建
测试类逻辑
工厂类的提取
学习视频私信“学习”免费领取
阶段项目:贪吃蛇小游戏
引入
小蛇行动原理图
将图片加载到程序中来
创建窗体
创建面板
画静态的小蛇
将蛇头按照行走方向改变
加入监听,空格来控制游戏是否开
小蛇向右动起来
小蛇上下左右动起来
画食物吃食物
画积分
死亡判定
游戏打包
图片中的学习视频私信“资料”免费领取
第5阶段:JavaSE进阶学习
异常
异常的案例引入
处理异常方式:if-else
处理异常方式:try-catch捕获
catch中处理异常的几种方式
fifinally讲解
多重catch
异常的分类/层次结构
throw和throws的区别
异常练习
重载和重写异常的区别
自定义异常
常用类
包装类_引入
包装类常用属性常用构造器
包装类自动装箱自动拆箱
包装类_常用方法
日期相关_java.util.Date
日期相关_java.sql.Date
日期相关_SimpleDateFormat
日期相关_Calendar
日期相关_Calendar练习需求
日期相关_Calendar练习完成
日期相关_JDK1.8新增日期时间API的原因
日期相关_JDK1.8新增LocalDateTime
日期相关_JDK1.8新增LocalDateTim
日期相关_JDK1.8新增DateTimeFormatter
Math类
Random类
String的底层本质
集合
什么是算法什么是数据结构
紧密结构,跳转结
集合的引入
简要集合结构图
集合的应用场合
Cllection接口的常用方法
Cllection接口的遍历方式
List接口
ArrayList实现类JDK1.7源码
ArrayList实现类JDK1 .8源码
Vector实现类源码
泛型的引入
自定义泛型结构泛型类泛型接口
自定义泛型结构泛型类泛型接口细节
自定义泛型结构泛型方法
自定义泛型结构泛型参数存在继承关系的情况
自定义泛型结构通配符
自定义泛型结构通配符使用的细节
自定义泛型结构泛型受限
LinkedList实现类的使用
LinkedL ist简要底层原理图
模拟LinkedList源码
LinkedL ist源码解析(JDK1.8)
iterator()面试题
迭代器具体实现
Listlterator迭代器
Set接口介绍
HashSet的特点
HashSet的简要原理
HashSet原理留下的疑问
LinkedHashSet的使用
比较器的使用
TreeSet的使用及原理
Map接口中常用方法1
Map接口中常用方法2
Hashtable的使用
TreeMap的使用
HashMap的原理简单介绍
HashMap中重要属性
HashMap的构造器
HashMap的put方法
HashMap底层数组的扩容
HashMap的两个经典面试题
HashSet底层原理
TreeMap底层源码
TreeSet底层源码
Collections工具类
IO流
File类的引入
File对文件的操作
File对目录的操作
I0流的引入
FileReader读取文件内容(1.2)
FileWriter写出数据操作
FileReader,FileWriter完成文件复制
警告-不要用字符流去操作非文本文件
利用try-catch-fifinally处理异常方式
FilelnputStream读取文件中内容
FilelnputStream,FileOutputStream完成非文本文件的复制缓冲字节流(处理流)- BufferedInputStream ,BufferedOutputStream
比对非文本文件复制的三种方法的效率
缓冲字符流(处理流)-BufferedReader,BufferedWriter完成文本文件的复制
转换流-InputStreamReader,OutputStreamWriter
转换流-InputStreamReader,OutputStreamWriter实现文本文件的复制
System类对I0流的支持
练习:键盘录入内容输出到文件中
数据流- DatalnputStream,DataOutputStream
对象流序列化和反序列化
实现Serializable接口
serialVersionUlD
IDEA中配置序列化版本号
序列化细节
多线程
网络编程
网络编程的引入
InetAddress,InetSocketAddress
网络通信原理套接字的引入
TCP通信单向通信
TCP通信对象流传送
TCP通信加入完整的处理异常方式
TCP通信_多线程接收用户请求
UDP通信_单向通信
UDP通信_双向通信
UDP通信加入完整的异常处理方式
UDP通信完整正常通信
阶段项目:坦克大战
new出一个窗口
设定标题栏内容
TankFrame从Frame继承+显示
认识paint方法,重写
学习graphics类,画图
学习repaint方法
实现MyKeyListener,对键盘作出响应
MyKeyListener
取得具体按键信息
根据具体按键调整坦克位置,持有对方引用
抽象出坦克类,学习使用枚举类型
MyKeyListener,TankFrame
用匿名内部类处理窗口关闭
根据按键状态,改变坦克方向
用双缓冲消除闪烁
加一堆敌人坦克
做碰撞检测
显示爆炸
加入声音
让敌人坦克更加智能
对坦克和子弹加入 Group属性
测试Properties类的使用
建立PropertyMgr类
MV分开 Model View分离
GameModel 改成单例模式
对于碰撞的处理
创建实例
抽象出游戏物体的父类
合成GameModel中的各种不同物体
完善责任链模式
加入墙
按键切换发射策略
实现暂停功能
实现存盘功能
使用Junit测试服务器loop
去掉敌人的坦克(机器控制的坦克)
处理接收到的消息
player新的构造方法
让后来人能看到先加入者
加入坦克方向改变的消息
重构代码
处理改变坦克方向的消息
发送主战坦克停止的消息
发送主战坦克开始移动的消息(方向没变)
加入子弹和Player的撞击逻辑
把主战坦克也加入到List中
完成坦克大战网络版
根据坦克方向移动位置
能停,能动
test包,关于classloader的知识
将坦克换成图片版
画出一颗子弹,让子弹飞一会儿
按下ctrl键,主战坦克打出一发炮弹
打出多发子弹
子弹从坦克中心位置打出
子弹消亡(飞出游戏区)
定义rectangle属性,不用每次都new
炮弹new出来自动加入容器,死掉后自动去除
分离玩家和机器人,对边界进行不同的处理
JUnit
Junit单元测试引入
没有Junit的情况下如何测试
Junit的使用
@Before_ @After
枚举
引入自定义枚举类
JDK1.5后使用enum关键字定义枚举类
enum定义枚举类补充
Enum类的常用方法
枚举类实现接口
枚举的应用
注解
注解的引入
注解实例_Junit注解
注解实例_文档注解
注解实例_JDK内置的3个注解
注解实例_替代配置文件的注解
自定义注解
元注解的概念解释
元注解_Retention
元注解_Retention补充
元注解_Target
元注解_Documented
元注解_Inherited
反射机制
反射的引入
反射概念
Class类
提供丰富的类
获取字节码信息的四种方式
可以作为Class类的实例的种类
补充上面的丰富的类中的内容
获取构造器和创建对象
获取属性和对属性进行赋值
获取方法和调用方法
获取类的接口,所在包,注解
关于反射的面试题
第6阶段 :数据库+JDBC
Oracle+MySQL+JDBC
oracle安装介绍
oracle SQL
oracle函数和多表连接
oracle的join语法及行专列
oracle视图、用户管理、序列、DML
数据库的事务
数据库表的创建、表的约束、索引、数据库
JDBC及代码分层
反射技术实现及封装
DBUtil及数据库连接池(dbcp、c3p0)
数据库连接池(druid、hikariCP)及索引
mysql的执行计划
mysql的锁机制
mysql的主从复制和读写分离
MyCat
MyCat第一讲.第二讲.第三讲
第7阶段 :前端精讲
HTML
HTML和CSS的引入
网络传输三大基石
什么是HTML
HTML的标准结构
HBuilder的使用
html_head_body标签
head中可用标签
文本标签
多媒体标签
超链接标签
+
超链接设置锚点
列表标签
列表标签
内嵌框架
内嵌框架练习 (1.2)
框架集合
form表单的作用
form表单细节
form表单练习模拟百度搜索
表单元素(1)
表单元素(2)
HTML5新增type类型
HTML5新增属性
CSS
CSS的引入
CSS的三种书写方式
明白学习CSS的重点
选择器_基本选择器
选择器关系选择器
选择器_属性选择器
选择器_伪类选择器
练习:百度导航栏
浮动的原理
消除浮动影响
定位_静态定位相对定位
定位绝对定位
定位_固定定位
盒子模型引入
盒子模型代码演示
盒子模型练习题
JS
js介绍及内置功能函数、数据类型、变量
js的变量及运算符
js的流程控制语句
js的函数基本使用
js的数组和字符串的基本使用
dom操作、常用方法、事件绑定
echarts和js对象、函数上下文
js构造函数、js原型链、继承及实战案例
JQuery
jquery简介、选择器、常用方法
jquery的节点关系及函数操作
jquery轮播图及函数库介绍)
Ajax
Http协议、php的基本介绍
ajax基本原理及使用
ajax的接受数据的方式及三级联通案例
Vue框架的介绍及使用
vue框架的介绍及使用
vue框架的调色板、属性值监听、函数
vue框架的生命周期、组件使用
vue框架的高阶使用
因文章内容过多分上下篇
文章中图片真实可靠,需要学习视频私信“资料”二字免费领取
如果觉得还不错的话,可以点点关注,和转发
《Java学习、面试;文档、视频资源免费获取》