课程试听
                
        第一章 就业课(2.0)-Java基础语法
            1-1 java运行环境
            
        
        - day01_01_Java语言发展史
 - day01_02_计算机进制转换
 - day01_03_计算机存储单元
 - day01_04_命令提示符_基本介绍
 - day01_05_命令提示符_常用命令
 - day01_06_Java语言的跨平台性
 - day01_07_JDK、JRE与JVM
 - day01_08_JDK的下载与安装
 - day01_09_环境变量的配置
 
            1-2 HelloWorld案例
            
        
        - day01_10_HelloWorld程序的代码编写
 - day01_11_HelloWorld程序的编译运行
 - day01_12_HelloWorld的常见问题与Notepad++使用
 - day01_13_程序注释与HelloWorld说明
 
            1-3 关键字&标识符
            
        
        - day01_14_关键字的概念与特征
 - day01_15_标识符的概念与规则
 
            1-4 常量&变量
            
        
        - day01_16_常量的概念与分类
 - day01_17_常量的打印输出
 - day01_18_基本数据类型
 - day01_19_变量的概念与定义格式
 - day01_20_变量的基本使用
 - day01_21_变量的注意事项
 
            1-5 数据类型转换
            
        
        - day02_01_数据类型转换_自动转换
 - day02_02_数据类型转换_强制转换
 - day02_03_数据类型转换_注意事项
 - day02_04_ASCII编码表
 
            1-6 运算符
            
        
        - day02_05_算术运算符_四则与取模运算
 - day02_06_算术运算符_加号的多种用法
 - day02_07_算术运算符_自增自减运算符
 - day02_08_赋值运算符
 - day02_09_比较运算符
 - day02_10_逻辑运算符
 - day02_11_三元运算符
 
            1-7 方法入门
            
        
        - day02_12_方法入门_概念引入
 - day02_13_方法入门_方法的定义
 - day02_14_方法入门_方法的调用
 
            1-8 JDK9新特性-Jshell
            
        
        - day02_15_JDK9的JShell简单使用
 - day02_16_编译器的两点优化
 
            1-9 选择结构-if语句-switch语句
            
        
        - day03_01_流程概述与顺序结构
 - day03_02_选择结构_单if语句
 - day03_03_选择结构_标准if-else语句
 - day03_04_选择结构_扩展if-else语句
 - day03_05_练习_用if语句实现考试成绩划分
 - day03_06_练习_用if语句替换三元运算符
 - day03_07_选择结构_标准的switch语句
 - day03_08_选择结构_穿透的switch语句
 
            1-10 循环结构-for-while-do..while
            
        
        - day03_09_循环结构_循环概述与基本组成部分
 - day03_10_循环结构_for循环
 - day03_11_循环结构_while循环
 - day03_12_循环结构_do-while循环
 - day03_13_练习_用循环求出1-100之间的偶数和
 - day03_14_三种循环的区别
 - day03_15_循环控制_break语句
 - day03_16_循环控制_continue语句
 - day03_17_死循环
 - day03_18_循环嵌套
 
            1-11 开发工具-IDEA
            
        
        - day04_01_集成开发环境IDE的概述
 - day04_02_IntelliJ-IDEA的安装
 - day04_03_IDEA的项目结构
 - day04_04_IDEA的HelloWorld
 - day04_05_IDEA的基本配置
 - day04_06_IDEA的常用快捷键
 - day04_07_IDEA的项目关闭打开与模块导入
 
            1-12 方法复习
            
        
        - day04_08_复习简单方法的使用
 - day04_09_方法的定义格式
 - day04_10_方法的三种调用格式
 - day04_11_方法的调用流程图解
 - day04_12_对比有参数和无参数
 - day04_13_对比有返回值和无返回值
 - day04_14_方法练习1_比较两个数字是否相同
 - day04_15_方法练习2_求出1到100的累加和
 - day04_16_方法练习3_打印指定次数的HelloWorld
 - day04_17_方法的注意事项
 
            1-13 方法重载
            
        
        - day04_18_方法重载的基本使用
 - day04_19_方法重载的注意事项
 - day04_20_重载练习1_四种不同参数类型的方法
 - day04_21_重载练习2_判断方法的正确重载
 - day04_22_重载练习3_实现重载的println方法
 
            1-14 数组
            
        
        - day05_01_数组的概念
 - day05_02_数组的定义格式一_动态初始化
 - day05_03_数组的定义格式二_静态初始化
 - day05_04_数组的定义格式三_省略的静态初始化
 - day05_05_访问数组元素进行获取
 - day05_06_访问数组元素进行赋值
 - day05_07_Java中的内存划分
 - day05_08_一个数组的内存图
 - day05_09_两个数组的内存图
 - day05_10_两个引用指向同一个数组的内存图
 - day05_11_常见问题_数组索引越界异常
 - day05_12_常见问题_空指针异常
 - day05_13_获取数组的长度
 - day05_14_数组的遍历输出
 - day05_15_求出数组中的最值
 - day05_16_数组元素反转
 - day05_17_数组作为方法参数_传递地址
 - day05_18_数组作为方法返回值_返回地址
 
第二章 就业课(2.0)-面向对象和封装
            2-1 描述类介绍与使用
            
        
        - day06_01_面向对象思想的概述
 - day06_02_面向对象思想的举例
 - day06_03_类和对象的关系
 - day06_04_类的定义
 - day06_05_对象的创建及其使用
 - day06_06_手机类练习
 - day06_07_一个对象的内存图
 - day06_08_两个对象使用同一个方法的内存图
 - day06_09_两个引用指向同一个对象的内存图
 - day06_10_使用对象类型作为方法的参数
 - day06_11_使用对象类型作为方法的返回值
 - day06_12_成员变量和局部变量的区别
 - day06_13_面向对象三大特征之封装性
 - day06_14_private关键字的作用及使用
 - day06_15_练习使用private关键字定义学生类
 - day06_16_this关键字的作用
 - day06_17_构造方法
 - day06_18_定义一个标准的类
 
第三章 就业课(2.0)-常用API第一部分
            3-1 Scanner类
            
        
        - day07_01_API概述和使用步骤
 - day07_02_Scanner概述及其API文档的使用
 - day07_03_Scanner的使用步骤
 - day07_04_Scanner练习一_键盘输入两个数字求和
 - day07_05_Scanner练习二_键盘输入三个数字求最大值
 
            3-2 匿名对象
            
        
        - day07_06_匿名对象的说明
 - day07_07_匿名对象作为方法的参数和返回值
 
            3-3 Random类
            
        
        - day07_08_Random概述和基本使用
 - day07_09_Random生成指定范围的随机数
 - day07_10_Random练习一_生成1-n之间的随机数
 - day07_11_Random练习二_猜数字小游戏
 
            3-4 ArrayList集合
            
        
        - day07_12_对象数组
 - day07_13_ArrayList集合概述和基本使用
 - day07_14_ArrayList集合的常用方法和遍历
 - day07_15_ArrayList集合存储基本数据类型
 - day07_16_ArrayList练习一_存储随机数字
 - day07_17_ArrayList练习二_存储自定义对象
 - day07_18_ArrayList练习三_按指定格式遍历集合字符串
 - day07_19_ArrayList练习四_筛选集合中的随机数
 
            3-5 String类
            
        
        - day08_01_字符串概述和特点
 - day08_02_字符串的构造方法和直接创建
 - day08_03_字符串的常量池
 - day08_04_字符串的比较相关方法
 - day08_05_字符串的获取相关方法
 - day08_06_字符串的截取方法
 - day08_07_字符串的转换相关方法
 - day08_08_字符串的分割方法
 - day08_09_练习:按指定格式拼接字符串
 - day08_10_练习:统计输入的字符串中各种字符的个数
 
            3-6 static静态
            
        
        - day08_11_静态static关键字概述
 - day08_12_静态static关键字修饰成员变量
 - day08_13_静态static关键字修饰成员方法
 - day08_14_静态static的内存图
 - day08_15_静态代码块
 
            3-7 Arrays工具类
            
        
        - day08_16_数组工具类Arrays
 - day08_17_Arrays练习:字符串倒序排列
 
            3-8 Math类
            
        
        - day08_18_数学工具类Math
 - day08_19_Math练习:小学数学真题
 
第四章 就业课(2.0)-继承与多态
            4-1 继承
            
        
        - day09_01_继承的概述
 - day09_02_继承的格式
 - day09_03_继承中成员变量的访问特点
 - day09_04_区分子类方法中重名的三种变量
 - day09_05_继承中成员方法的访问特点
 - day09_06_继承中方法的覆盖重写_概念与特点
 - day09_07_继承中方法的覆盖重写_注意事项
 - day09_08_继承中方法的覆盖重写_应用场景
 - day09_09_继承中构造方法的访问特点
 - day09_10_super关键字的三种用法
 - day09_11_this关键字的三种用法
 - day09_12_super与this关键字图解
 - day09_13_Java继承的三个特点
 
            4-2 抽象类
            
        
        - day09_14_抽象的概念
 - day09_15_抽象方法和抽象类的格式
 - day09_16_抽象方法和抽象类的使用
 - day09_17_抽象方法和抽象类的注意事项
 - day09_18_发红包案例_分析
 - day09_19_发红包案例_实现
 
            4-3 接口
            
        
        - day10_01_接口概述与生活举例
 - day10_02_接口的定义基本格式
 - day10_03_接口的抽象方法定义
 - day10_04_接口的抽象方法使用
 - day10_05_接口的默认方法定义
 - day10_06_接口的默认方法使用
 - day10_07_接口的静态方法定义
 - day10_08_接口的静态方法使用
 - day10_09_接口的私有方法定义
 - day10_10_接口的私有方法使用
 - day10_11_接口的常量定义和使用
 - day10_12_接口的内容小结
 - day10_13_继承父类并实现多个接口
 - day10_14_接口之间的多继承
 
            4-4 多态
            
        
        - day10_15_多态的概述
 - day10_16_多态的格式与使用
 - day10_17_多态中成员变量的使用特点
 - day10_18_多态中成员方法的使用特点
 - day10_19_使用多态的好处
 - day10_20_对象的向上转型
 - day10_21_对象的向下转型
 - day10_22_用instanceof关键字进行类型判断
 - day10_23_笔记本USB接口案例_分析
 - day10_24_笔记本USB接口案例_实现
 
            4-5 final关键字
            
        
        - day11_01_final关键字概念与四种用法
 - day11_02_final关键字用于修饰类
 - day11_03_final关键字用于修饰成员方法
 - day11_04_final关键字用于修饰局部变量
 - day11_05_final关键字用于修饰成员变量
 
            4-6 权限修饰符
            
        
        - day11_06_四种权限修饰符
 
            4-7 内部类
            
        
        - day11_07_内部类的概念与分类
 - day11_08_成员内部类的定义
 - day11_09_成员内部类的使用
 - day11_10_内部类的同名变量访问
 - day11_11_局部内部类定义
 - day11_12_局部内部类的final问题
 - day11_13_匿名内部类
 - day11_14_匿名内部类的注意事项
 - day11_15_类作为成员变量类型
 - day11_16_接口作为成员变量类型
 - day11_17_接口作为方法的参数和或返回值
 - day11_18_发红包案例_分析
 - day11_19_发红包案例_普通红包平均分发
 - day11_20_发红包案例_手气红包随机分发
 
第五章 就业课(2.0)-常用API第二部分
            5-1 Object类
            
        
        - 02_Object类的toString方法
 - 03_Object类的equals方法
 - 04_重写Object类的equals方法
 - 05_Objects类的equals方法
 - 05_1Object类&Objects类
 
            5-2 Date类
            
        
        - 06_毫秒值的概念和作用
 - 07_Date类的构造方法和成员方法
 - 08_DateFormat类&SimpleDateFormat类介绍
 - 09_DateFormat类的format方法和parse方法
 - 10_练习_请使用日期时间相关的API,计算出一个人已经出生了多少天
 
            5-3 Calendar类
            
        
        - 11_Calendar类介绍_获取对象的方式
 - 12_Calendar类的常用成员方法
 - 12_1时间日期相关类
 
            5-4 System类
            
        
        - 13_System类的常用方法
 
            5-5 StringBuilder类
            
        
        - 14_StringBuilder的原理
 - 15_StringBuilder的构造方法和append方法
 - 16_StringBuilder的toString方法
 - 16_1System类&StringBuilder类
 
            5-6 基本类型包装类
            
        
        - 17_包装类的概念
 - 18_包装类_装箱与拆箱
 - 19_包装类_自动装箱与自动拆箱
 - 20_包装类_基本类型与字符串类型之间的相互转换
 - 20_1包装类
 
第六章 就业课(2.0)-集合
            6-1 Collection集合
            
        
        - 02_Collection集合概述
 - 03_集合框架介绍avi
 - 04_Collection集合常用功能
 - 04_2Collection集合
 - 05_Iterator接口介绍
 - 06_迭代器的代码实现
 - 07_迭代器的实现原理
 - 08_增强for循环
 - 08_2迭代器&增强for
 
            6-2 泛型
            
        
        - 09_泛型的概念
 - 10_使用泛型的好处
 - 11_定义和使用含有泛型的类
 - 12_定义和使用含有泛型的方法(1)
 - 13_定义和使用含有泛型的接口
 - 14_泛型通配符
 - 14_2泛型的使用
 
            6-3 斗地主案例(单列)
            
        
        - 15_斗地主案例的需求分析
 - 16_斗地主案例的代码实现
 
            6-4 数据结构
            
        
        - 02_数据结构_栈
 - 03_数据结构_队列
 - 04_数据结构_数组
 - 05_数据结构_链表
 - 06_数据结构_红黑树
 
            6-5 List集合
            
        
        - 07_List集合_介绍&常用方法
 - 08_Arraylist集合
 - 09_LinkedList集合
 - 10_Vector集合
 
            6-6 Set集合
            
        
        - 11_HashSet集合介绍
 - 12_哈希值
 - 13_HashSet集合存储数据的结构(哈希表)
 - 14_Set集合存储元素不重复的原理
 - 15_HashSet存储自定义类型元素
 - 16_LinkedHashSet集合
 - 17_可变参数
 
            6-7 Collections工具类
            
        
        - 18_Collections集合工具类的方法_addAll&shuffle
 - 19_Collections集合工具类的方法_sort(List)
 - 20_Collections集合工具类的方法_sort(List,Comparator)
 
            6-8 Map集合
            
        
        - 01_Map集合概述
 - 02_Map常用子类
 - 03_Map接口中的常用方法
 - 04_Map集合遍历键找值方式
 - 05_Entry键值对对象
 - 06_Map集合遍历键值对方式
 - 07_HashMap存储自定义类型键值
 - 08_LinkedHashMap集合
 - 09_Hashtable集合
 - 10_练习_计算一个字符串中每个字符出现次数
 - 11_JDK9对集合添加的优化_of方法
 
            6-9 Debug调试
            
        
        - 12_Debug追踪
 
            6-10 斗地主案例(双列)
            
        
        - 13_斗地主案例的需求分析
 - 14_斗地主案例的代码实现
 
第七章 就业课(2.0)-异常与多线程
            7-1 异常
            
        
        - 02_异常概念&异常体系
 - 03_异常分类
 - 04_异常的产生过程解析
 - 05_throw关键字
 - 06_Objects非空判断_requireNonNull方法
 - 07_throws关键字_异常处理的第一种方式,交给别人处理
 - 08_try_catch_异常处理的第二种方式,自己处理异常
 - 09_Throwable类中3个异常处理的方法
 - 10_finally代码块
 - 11_异常注意事项_多异常的捕获处理
 - 12_异常注意事项_finally有return语句
 - 13_异常注意事项_子父类异常
 - 14_自定义异常类
 - 15_自定义异常类的练习
 
            7-2 线程实现方式
            
        
        - 16_并发与并行
 - 17_进程概念
 - 18_线程概念
 - 19_线程调度
 - 20_主线程
 - 21_创建多线程程序的第一种方式_创建Thread类的子类
 - 02_多线程原理_随机性打印结果
 - 03_多线程原理_多线程内存图解
 - 04_Thread类的常用方法_获取线程名称的方法
 - 05_Thread类的常用方法_设置线程名称的方法
 - 06_Thread类的常用方法_sleep
 - 07_创建多线程程序的第二种方式_实现Runnable接口
 - 08_Thread和Runnable的区别
 - 09_匿名内部类方式实现线程的创建
 
            7-3 线程同步机制
            
        
        - 10_线程安全问题的概述
 - 11_线程安全问题的代码实现
 - 12_线程安全问题产生的原理
 - 13_解决线程安全问题_同步代码块
 - 14_同步技术的原理
 - 15_解决线程安全问题_同步方法
 - 16_静态同步方法
 - 17_解决线程安全问题_Lock锁
 
            7-4 等待唤醒机制
            
        
        - 18_线程状态概述
 - 19_等待唤醒案例分析
 - 20_等待唤醒案例代码实现
 - 21_Object类中wait带参方法和notifyAll方法
 - 02_线程间通信
 - 03_等待唤醒机制概述
 - 04_等待唤醒机制需求分析
 - 05_等待唤醒机制代码实现_包子类&包子铺类
 - 06_等待唤醒机制代码实现_吃货类&测试类
 
            7-5 线程池
            
        
        - 07_线程池的概念和原理
 - 08_线程池的代码实现
 
            7-6 Lambda表达式
            
        
        - 09_函数式编程思想概述
 - 10_冗余的Runnable代码
 - 11_编程思想转换&体验Lambda的更优写法
 - 12_Lambda标准格式
 - 13_Lambda表达式的无参数无返回值的练习
 - 14_Lambda表达式有参数有返回值的练习
 - 15_Lambda表达式有参数有返回值的练习(自定义接口)
 - 16_Lambda省略格式&Lambda使用前提
 
第八章 就业课(2.0)-File类与IO流
            8-1 File类
            
        
        - 02_File类的概述
 - 03_File类的静态成员变量
 - 04_绝对路径和相对路径
 - 05_File类的构造方法
 - 06_File类获取功能的方法
 - 07_File类判断功能的方法
 - 08_File类创建删除功能的方法
 - 09_File类遍历(文件夹)目录功能
 
            8-2 递归
            
        
        - 10_递归概念&分类&注意事项
 - 11_练习_使用递归计算1-n之间的和
 - 12_练习_使用递归计算阶乘
 - 13_练习_递归打印多级目录
 - 14_综合案例_文件搜索
 
            8-3 过滤器
            
        
        - 15_FileFilter过滤器的原理和使用
 - 16_FileNameFilter过滤器的使用和Lambda优化程序
 
            8-4 IO字节流
            
        
        - 02_IO概述(概念&分类)
 - 03_一切皆为字节
 - 04_字节输出流_OutputStream类&FileOutputStream类介绍
 - 05_字节输出流写入数据到文件
 - 06_文件存储的原理和记事本打开文件的原理
 - 07_字节输出流写多个字节的方法
 - 08_字节输出流的续写和换行
 - 09_字节输入流_InputStream类&FileInputStream类介绍
 - 10_字节输入流读取字节数据
 - 11_字节输入流一次读取一个字节的原理
 - 12_字节输入流一次读取多个字节
 - 13_练习_文件复制
 - 14_使用字节流读取中文的问题
 
            8-5 IO字符流
            
        
        - 15_字符输入流_Reader类&FileReader类介绍
 - 16_字符输入流读取字符数据
 - 17_字符输出流_Writer类&FileWriter类介绍
 - 18_字符输出流的基本使用_写出单个字符到文件
 - 19_flush方法和close方法的区别
 - 20_字符输出流写数据的其他方法
 - 21_字符输出流的续写和换行
 - 22_使用try_catch_finally处理流中的异常
 - 23_JDK7和JDK9流中异常的处理
 
            8-6 Properties集合
            
        
        - 24_使用Properties集合存储数据,遍历取出Properties集合中的数据
 - 25_Properties集合中的方法store
 - 26_Properties集合中的方法load
 
            8-7 缓冲流
            
        
        - 02_缓冲流的原理
 - 03_BufferedOutputStream_字节缓冲输出流
 - 04_BufferedInputStream_字节缓冲输入流
 - 05_缓冲流的效率测试_复制文件
 - 06_BufferedWriter_字符缓冲输出流
 - 07_BufferedReader_字符缓冲输入流
 - 08_练习_对文本的内容进行排序
 
            8-8 转换流
            
        
        - 09_字符编码和字符集
 - 10_编码引出的问题_FileReader读取GBK格式的文件
 - 11_转换流的原理
 - 12_OutputStreamWriter介绍&代码实现
 - 13_InputStreamReader介绍&代码实现
 - 14_练习_转换文件编码
 
            8-9 序列化流
            
        
        - 15_序列化和反序列化的概述
 - 16_对象的序列化流_ObjectOutputStream
 - 17_对象的反序列化流_ObjectInputStream
 - 18_transient关键字_瞬态关键字
 - 19_InvalidClassException异常_原理和解决方案
 - 20_练习_序列化集合
 
            8-10 打印流
            
        
        - 21_打印流_概述和使用
 
第九章 就业课(2.0)-网络编程
            9-1 网络通信概述
            
        
        - 02_软件结构
 - 03_网络通信协议
 - 04_网络通信协议分类
 - 05_IP地址
 - 06_端口号
 
            9-2 TCP协议
            
        
        - 07_TCP通信的概述(上)
 - 08_TCP通信的概述(下)
 - 09_TCP通信的客户端代码实现
 - 10_TCP通信的服务器端代码实现
 
            9-3 综合案例_文件上传
            
        
        - 11_综合案例_文件上传的原理
 - 12_综合案例_文件上传案例的客户端
 - 13_综合案例_文件上传案例的服务器端
 - 14_综合案例_文件上传案例阻塞问题
 - 15_综合案例_文件上传案例优化(文件命名&循环接收&多线程提高效率)
 
            9-4 模拟BS服务器案例
            
        
        - 16_模拟BS服务器分析
 - 17_模拟BS服务器代码实现
 
第十章 就业课(2.0)-JDK8新特性
            10-1 常用函数接口
            
        
        - 02_函数式接口的概念&函数式接口的定义
 - 03_函数式接口的使用
 - 04_性能浪费的日志案例
 - 05_使用Lambda优化日志案例
 - 06_函数式接口作为方法的参数案例
 - 07_函数式接口作为方法的返回值类型案例
 - 08_常用的函数式接口_Supplier接口
 - 09_常用的函数式接口_Supplier接口练习_求数组元素最大值
 - 10_常用的函数式接口_Consumer接口
 - 11_常用的函数式接口_Consumer接口的默认方法andThen
 - 12_常用的函数式接口_Consumer接口练习_字符串拼接输出
 - 13_常用的函数式接口_Predicate接口
 - 14_常用的函数式接口_Predicate接口_默认方法and
 - 15_常用的函数式接口_Predicate接口_默认方法or&negate
 - 16_常用的函数式接口_Predicate接口练习_集合信息筛选
 - 17_常用的函数式接口_Function接口
 - 18_常用的函数式接口_Function接口_默认方法andThen
 - 19_常用的函数式接口_Function接口练习_自定义函数模型拼接
 
            10-2 Stream流式思想概述
            
        
        - 02_使用传统的方式,遍历集合,对集合中的数据进行过滤
 - 03_使用Stream流的方式,遍历集合,对集合中的数据进行过滤
 - 04_流式思想概述
 
            10-3 两种获取Stream流的方式
            
        
        - 05_两种获取Stream流的方式
 - 06_Stream流中的常用方法_forEach
 - 07_Stream流中的常用方法_filter
 - 08_Stream流的特点_只能使用一次
 - 09_Stream流中的常用方法_map
 - 10_Stream流中的常用方法_count
 - 11_Stream流中的常用方法_limit
 - 12_Stream流中的常用方法_skip
 - 13_Stream流中的常用方法_concat
 - 14_练习:集合元素处理(传统方式)
 - 15_练习:集合元素处理(Stream方式)
 
            10-4 方法引用
            
        
        - 16_方法引用基本介绍
 - 17_方法引用_通过对象名引用成员方法
 - 18_方法引用_通过类名引用静态成员方法
 - 19_方法引用_通过super引用父类的成员方法
 - 20_方法引用_通过this引用本类的成员方法
 - 21_方法引用_类的构造器(构造方法)引用
 - 22_方法引用_数组的构造器引用