java icon indicating copy to clipboard operation
java copied to clipboard

尚硅谷java 2019练习

JAVA Study

Table Of Contents

day01_JAVA语言概述与基本语法:标识符、变量分类、源码_反码_补码、进制转换、编码与字符集
  • day01_JAVA语言概述与基本语法
    • JAVA语言概述
      • java语言特点
      • java两种核心机制
      • .java源文件要求
      • JDK、JRE、JVM的关系
      • 注释
      • javadoc生成文档说明
    • 关键字
      • 定义数据类型的关键字
      • 定义数据类型值的关键字
      • 定义流程控制的关键字
      • 定义权限修饰符的关键字
      • 定义类、函数、变量修饰符的关键字
      • 定义类与类之间关系的关键字
      • 定义建立实例及引用实例,判断实例的关键字
      • 异常处理的关键字
      • 用于包的关键字
      • 其他修饰符关键字
      • 保留字
    • 标识符
      • 合法标识符规则
    • Java中名称命名规范
    • java中变量的声明与使用
      • 变量
      • 程序的执行过程
      • 变量的分类
        • 整数类型
        • 浮点型
        • 字符类型
        • 布尔类型boolean
      • 变量之间的运算
    • 4种整数表达方式
    • 原码、反码、补码
    • 进制之间转换
      • 十进制转其它进制内置方法
    • 编码与字符集
      • ASCII编码
      • Unicode编码
        • UTF-8
day02_基本语法.运算符:算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、三元运算符、运算符优先级
  • day02_基本语法
    • 运算符
      • 算术运算符
        • 取模(取余数):%
        • 自增
        • 自减
        • 算术运算符的注意问题
        • 算术运算示例
      • 赋值运算符
      • 比较运算符
      • 逻辑运算符
        • 逻辑运算符对比示例
      • 位运算符
        • 位运算符细节
        • 位运算应用例子
      • 三元运算符
      • 运算符的优先级
    • 10进制数转成以16进制格式打印出来
day03_基本语法.程序流程控制:顺序结构、分支结构、循环结构
  • day03_基本语法.程序流程控制.循环结构
    • 程序流程控制
      • 结构类型
        • 顺序结构
        • 分支结构
        • 循环结构
    • 分支结构
      • if-else
      • switch-case
        • switch-case规则
      • 自动判断是否为闰年 示例
    • 循环结构
      • for循环
      • while
      • do-while
      • 特殊流程控制break
        • break语句用于终止某个语句块的执行
        • break语句出现在多层,嵌套的语句块中时,可以通过 lable 标签指明要终止的是哪一层语句块
      • continue特殊控制
      • return
      • break, continue, return特殊流程控制说明
day04_基本语法.数组
  • day04_基本语法.数组
    • 数组
    • 数组声明与初始化
    • 数组元素的默认值
    • java数据的内存基本结构
    • 多维数组
      • 数组的不同书写格式
      • 混合数据类型数组
    • Arrays数组操作类
day05_面向对象编程:类结构、属性、方法
  • day05_面向对象编程
    • 学习面向对象内容的三条主线
    • 面向对象与面向过程
    • 面向对象的思想概述
    • class类结构
      • 类的成员构成示例1
      • 类的成员构成示例2
    • 创建java自定义类
      • 类的成员之一:属性
      • 类中变量分类:成员变量与局部变量
        • 成员变量的默认值(类变量、实例变量)
      • 类的成员之二:方法
      • 对象的创建和使用
      • 类的访问机制
      • 方法(method)
        • 方法的调用
      • 方法的重载
      • 可变个数的形参
    • 内存划分的结构
    • 方法的参数传递
    • 面向对象特征之一:封装和隐藏
      • 信息的封装和隐藏
day06_面向对象编程:构造器
  • day06_面向对象编程.构造器
    • 类的成员之三:构造器(构造方法)
      • 构造器的特征
      • 构造器的作用
      • 构造器语法格式
      • 构造器规则
    • 构造器重载
day07_高级类特性1:封装、继承特性、方法重写与方法重载区别、this关键字
  • day07_高级类特性1
    • 关键字--this
      • this作用
      • this关键字使用注意事项
    • JavaBean
    • UML图表示类方法
    • 关键字--package
      • package的使用
    • 关键字--import
      • import语句使用注意事项
    • JDK主要的包介绍
    • 面向对象特征之二:继承
      • 继承基本概念
      • 继承的作用
      • 继承的规则
    • 方法的重写(overrides)
      • 定义
      • 方法重写规则
    • 方法重写与方法重载的区别
day08_高级类特性1:多态特性、4种访问权限修饰符、this与super区别、==与equals方法区别、instanceof操作符
  • day08_高级类特性1
    • 四种访问权限修饰符
    • super关键字
      • 调用父类的构造器
    • this和super的区别
      • super父类与子类的内存结构
      • 子类对象实例化的过程及内存结构
    • 面向对象特征之三:多态性
      • 虚拟方法调用(Virtual method invocation)
      • 子类继承父类
    • instanceof操作符
    • 对象类型转换(Casting)
    • Object类
      • Object类中的主要方法
    • ==操作符与equals方法
day09_高级类特性1:toString(方法)、包装类、static关键字
  • day09_高级类特性1
    • toString()方法
    • 包装类(Wrapper)
      • 基本数据类型、包装类、String类三者之间的互转
    • static关键字
      • 类属性、类方法的设计思想
day10_高级类特性2:初始化块、抽象类、interface接口、main方法、单例模式、模板方法设计模式
  • day10_高级类特性2
    • 单例设计模式(Singleton)
      • 单例的实现
    • main方法
    • 类的成员之四:初始化块
      • 代码块分类:static代码块、非satic代码块
    • final关键字
    • 抽象类(abstract class)
    • 模板方法设计模式(TemplateMethod)
    • interfacer接口
      • 接口用法总结
      • java8接口的改进
day11_高级类特性2:内部类、接口与抽象类的对比、工厂模式、代理模式
  • day11_高级类特性2
    • 工厂方法设计模式(factory method)
      • 概述
      • 应用场景
      • 示例
      • 工厂方法设计总结
    • 代理模式(proxy)
      • 概述(./day11/README.md#)
      • 示例
    • 接口和抽象类的关系
    • 类的成员之五:内部类
      • 内部类示例
    • 匿名内部类
      • 匿名内部示例
day12_异常处理
  • day12_异常处理
    • 异常的定义
      • 分类
      • Exception
      • 异常解决方法
      • 异常特点
      • java异常类层次
      • 异常、错误 示例
    • 异常处理机制
      • 如何处理异常
    • 异常处理方式一:抓取异常
      • 注意
    • 异常处理方式二:声明抛出异常
      • 重写方法声明抛出异常的原则
    • 手动抛出异常
    • 自定义异常类
    • 异常处理小结
      • java异常处理模型:抓抛模型
      • 异常处理5个关键字
    • 其他
      • java对象在内存中的结构
day13_java 集合:List、Set、Map接口、队列、Stack栈
  • day13_java 集合
    • java集合概述
      • Collection接口继承树
      • Map接口继承树
    • Collection接口
      • Collection接口方法
      • 使用Iterator接口遍历集合元素
      • for增强版遍历集合元素--foreach
    • List接口
      • List接口实现类之一:ArrayList
      • List实现类之二:LinkedList
      • List实现类之三:Vector
      • ListIterator接口
      • Iterator与ListIterator主要区别
    • Set接口
      • Set要求
      • Set实现类之一:HashSet
      • hashCode()方法
      • Set实现类之二:LinkedHashSet
      • Set实现类之三:TreeSet
      • Set交集、并集、差集运算
    • Map接口
      • Map常用方法
      • Map特点
      • Map接口实现类之一:HashMap
        • HashMap特点
        • Map创建对象时指定初始值
      • Map接口实现类之二:LinkedHashMap
      • Map接口实现类之三:TreeMap
      • Map接口实现类之四:Hashtable
      • Map接口实现类之五:Properties
    • 操作集合的工具类:Collections, 可控制List,Set,Map等的线程安全
    • Enumeration迭代器
    • 其他
      • Scanner异常处理
      • List中元素为对象,通过对象中的指定属性进行排序
      • List、Set、Map在创建对象时指定初始值
      • List与Set互转
      • Array与Set互转
    • Queue队列
      • Queue概念
      • Queue特点
      • Queue方法
      • Queue示例
    • PriorityQueue优先权队列
      • PriorityQueue概念
      • PriorityQueue特点
      • PriorityQueue示例
    • Deque双端队列
      • Deque概念
      • Deque特点
      • Queue和Deque出队和入队方法比较
      • Deque示例
    • Stack栈
      • Stack概念
      • Stack类方法
      • Deque代替Stack方法
      • Stack示例
    • Stack、Queue遍历
day14_泛型
  • day14_泛型
    • 泛型概述
    • 泛型的使用
    • 泛型的几个重要使用的地方
    • 泛型类规则
      • 自定义泛型类示例
    • 泛型接口
    • 泛型方法
    • 泛型与继承的关系
    • 泛型通配符
day14_enmu枚举类
  • enmu枚举类
    • 枚举类入门
      • 枚举类的属性
    • 自定义枚举类
    • enum枚举类与普通类的区别
    • 常用方法
      • enum枚举类示例
    • 枚举类实现接口
      • 实现接口的枚举类示例
    • JDK内置的枚举类示例
day14_注解
  • 注解
    • 注解概述
    • 三个常用的Annotation
      • 三个基本注解的使用示例
    • 自定义注解
      • 自定义注解示例
    • 元注解
    • 提取Annotation信息
    • 内置注解源码
    • java8注解新特性
day15_IO流:File类、InputStream、OutputStream、Reader、Writer、缓冲流、转换流、标准输入输出流、打印流、数据流、对象流
  • day15_IO流
    • File类
    • JAVA IO原理
    • 流的分类
      • 流的抽象基类
      • IO流体系
      • 节点流和处理流
    • InputStream、Reader
    • OutputStream、Writer
    • 处理流之一:缓冲流
    • 处理流之二:转换流
      • InputStreamReader
      • OutputStreamWriter
    • 字符集
    • 字符编码、解码(字节数组与字符数组互转时才需要指定字符集)
    • 处理之三:标准输入输出流
    • 处理流之四:打印流
    • 处理流之五:数据流DataInputStream、DataOutputStream
    • 处理流之六:对象流
      • 对象流使用注意,读取时报java.io.EOFException异常
      • 对象的序列化
      • 使用对象流序列化对象
    • RandomAccessFile类,可控制可任意位置读写文件
    • 流的基本应用小总结
NIO:Buffer缓冲区、Channel通道、FileChannel、字符集编码与解码、Pipe管道、NIO2Path、Paths、Files
  • NIO
    • NIO概述
    • NIO与IO的区别
    • Channel通道与Buffer缓冲区
    • Buffer缓冲区
      • 缓冲区的基本属性
      • Buffer常用方法
      • Buffer数据操作方法
      • 直接缓冲区与非直接缓冲区
      • HeapByteBuffer与DirectByteBuffer
    • Channel通道
      • Channel接口的主要实现类
      • 获取通道
      • 分散读取Scatter和聚集写入Gather
      • 通道之间的数据传输
    • FileChannel常用方法
    • 非阻塞式NIO、阻塞式NIO、与阻塞式IO
      • NIO TCP socket编程
      • NIO UDP socket编程
      • 选择器Selector
      • SelectionKey
      • 网络编程常用Channel
    • 字符集编码与解码
    • Pipe管道
    • NIO2 Path、Paths、Files
      • Path接口
      • Paths类
      • Files类
    • 自动资源管理
  • day16_多线程练习
day17_多线程
  • day17_多线程
    • 程序、进程、线程概念
    • 多线程使用场景
      • 多线程的创建和启动
    • Thread类
      • 创建线程(类)的两种方法
        • 继承Thread类
        • 实现Runnable接口
      • 继承Thread方式和实现Runnable方法的联系与区别
      • Thread构造器
      • Thread常用方法
    • 线程的调度
    • 线程的优先级
    • 使用多线程的优点
    • 线程的分类
      • 守护线程
      • 用户线程
    • 线程的生命周期
    • 线程的同步
    • synchronized线程同步使用方法
    • synchronized线程同步机制的两种实现方式
      • 同步代码块
      • 同步方法
    • 互斥锁
    • 懒汉式单例模式线程安全问题修复
    • 释放锁的操作
    • 不会释放锁的操作
    • 线程的死锁问题
    • 线程通信
      • 线程通信示例
      • 线程通信应用示例(生产者/消费者问题)
day18_java常用类:String类、StringBuffer类、StringBuilder类、与时间相关类、Math类、BigInteger类、BigDecimal类、Scanner类
  • day18_java常用类
    • String类
      • 字符串的特性
      • String类的构造器
      • String方法
        • String的hashCode()方法
      • 字符串与基本数据类型、包装类之间转换
      • 字符串与字节数组的相互转换
      • 字符串与字符数组的相互转换
    • StringBuffer类
      • 特点
      • 构造器
      • StringBuffer方法
    • StringBuilder类
      • String、StringBuffer、StringBuilder特点比较
    • 与时间相关的类
      • System.currentTimeMillis();
      • Date:java.util.Date、java.sql.Date
      • SimpleDateFormat
        • SimpleDateForma的pattern字母定义
      • Calendar
    • 主要时间标准
    • System类的System.currentTimeMillis()方法
    • Date类
    • SimpleDateFormat类
      • 匹配模式的字母定义
      • 根据指定格式 日期时间对象与字符串互转
    • Calendar类
      • Calendar类使用注意
    • Math类
    • BigInteger类
    • BigDecimal类
      • float、double类型数据计算时精度丢失避免方法
    • Scanner类
      • Scanner类
day19_java反射机制:通过反射获取类的完整结构、方法、属性、构造器,java动态代理
  • day19_java反射机制
    • java reflection
      • 反射机制提供的功能
      • 反射相关的主要API
      • Class类主要方法
      • 反射示例
      • 获取类的Class实例的4种方法
      • 示例
    • JAVA类加载过程
      • ClassLoader
      • 类加载器一个主要方法
    • 通过反射调用类的完整结构
      • 获取实现的接口
      • 获取所继承的父类
      • 获取全部的构造器
      • 获取全部的方法
      • 获取全部的属性(Field)
      • 获取注解(Annotation)
      • 泛型相关
      • 获取类所在的包
      • 获取内部类
      • 数字形式修饰符转String修饰符
      • 示例
    • 通过反射调用类中指定的方法、属性、构造器
      • 调用指定的方法
      • 调用指定的属性
      • 调用指定的构造器
    • 遍历打印指定类的成员(属性变量、构造器、方法)
    • JAVA动态代理
      • 静态代理示例
      • 动态代理示例
    • 动态代理与AOP(Aspect Orient Programming面向切面编程)
      • AOP代理示例
day20_网络编程:TCP socket、UDP socket、URL socket编程
  • day20_网络编程
    • 网络编程概述
    • 通讯要素
      • IP和端口
        • InetAddress类(IP地址)、InetSocketAddress(IP、端口)
      • 网络通信协议
    • TCP socket网络编程
      • ServerSocket类
      • Socket类
      • TCP socket、WebServer示例
    • UDP socket网络编程
      • DatagramSocket类
      • DatagramPacket类
    • URL socket网络编程
      • URL类
      • URLConnection类
      • HttpURLConnection类
    • 小结
    • 其他
      • java lambda表达式
      • InputStream判断数据已经读取结束的解决方法
java正则表达式
  • java正则表达式
    • 正则表达式概述
    • java regex正则
      • java.util.regex包结构
      • Pattern类
        • Pattern类主要方法
      • Matcher类
        • Matcher类主要方法
      • java正则示例
      • PatternSyntaxException异常类的方法
新版本java新特性
java 8新特性
  • java 8新特性
    • 本章内容
    • Java8新特性简介
    • Stream的并行流与串行流
    • Lambda表达式
      • Lambda表达式格式
      • Lambda表达式的本质
      • Lambda表达式的6种语法格式
    • 函数式(Functional)接口
      • java内置的函数式接口
    • 方法引用
      • 方法引用的本质
      • 方法引用三中使用情况
      • 方法引用示例
    • 构造器引用
      • 数组引用
      • 构造器引用示例
    • Stream API
      • Stream与Collection集合区别
      • Stream特点
      • Stream执行流程
      • Stream实例化的几种方式
      • 顺序流与并行流的互转
      • Stream实例化示例
      • Stream接口的中间操作
      • Stream接口的终止操作
      • Collectors类
    • Optional类
      • Optional方法
      • Optional示例
    • java8注解新特性
      • java8注解新特性示例
    • java8接口的改进,新增默认方法、静态方法
      • 接口中默认方法的"类优先"原则
    • 新的时间API
      • 新的时间类包结构
      • LocalDate、LocalTime、LocalDateTime
      • LocalDateTime类
        • LocalDateTime方法使用示例、时间格式化与解析
      • DateTimeFormatter格式化或解析日期、日间
      • java.util.Date与LocalDateTime,LocalDate互转
      • java.sql.Date、java.sql.Time、java.sql.Timestamp与LocalDate、LocalTime、LocalDateTime互转
      • Instant瞬时
        • Instant与LocalDateTime互转
      • 其他时间API
        • ChronoUnit计算两LocalDateTime、LocalDate、LocalTime差值(时分秒日月年等任选)
        • Duration计算两LocalDateTime、LocalTime的差值(秒、纳秒)
        • ...
    • ArrayList在java7和java8上的异同
    • HashMap在java7和java8的实现原理
    • Set结构
java 9新特性
  • java 9新特性
    • 本章内容
    • 新特性概览
    • JDK和JRE的改变
    • 模块化系统
      • 模块使用示例
    • REPL工具:jShell
      • jShell使用示例
    • 多版本兼容jar包
    • 接口的改进,新增私有方法
    • 抽象类、接口异同
    • 钻石操作符升级
    • try语句的改进
    • 下划线变量使用限制
    • String,StringBuffer,StringBuild存储结构变化
    • 集合工厂方法:快速创建只读集合
    • 增强的Stream API
    • 增强Optaional类
    • 多分辨率图像API
    • 全新的Http客户端接口HttpClient
    • 其他特性
      • Deprecated的相关API
      • 智能Java编译工具
      • 统一的JVM日志系统
      • javadoc的HTML 5支持
      • Javascript引擎升级为Nashorn
      • java的动态编译器
      • java的动态编译器
java 10新特性
  • java 10新特性
    • 局部变量类型推断
      • 适用情况
        • 局部变量的初始化
        • forEach增添循环
        • for遍历
      • 不适用情况
        • 变量初始值为null
        • lambda表达式
        • 方法引用中
        • 为数组静态初始化
        • 没有初始化的局部变量声明
        • 方法的返回类型
        • 方法的参数类型
        • 构造器的参数类型
        • 字段属性
        • catch块中的异常类型
      • 局部变量类型推断原理
    • 集合新增创建不可变集合的方法
java 11新特性
  • java 11新特性
    • String类新增方法
      • String类新增方法示例
    • Optional类新增方法
    • 局部变量类型推断升级
    • HttpClient增强
    • 更简单的编译运行程序
    • 其他特性
java 12新特性
  • java 12新特性
    • 新特性官方介绍
    • 新增Shenandoah低暂停时间垃圾回收器算法(实验性功能)
    • 添加一个基本的microbenchmark套件
    • 增强switch表达式(预览功能)
    • 引入JVM常量API
    • 只保留一个64位AARCH64端口
    • 64位平台上使用默认CDS存档
    • 增强G1垃圾回收器,可中止混合集合
    • 增强G1垃圾回收器,使其能自动返回未用堆内存给操作系统
    • 添加一个基本的microbenchmark套件
java 13新特性
  • java 13新特性
    • 新特性官方说明
    • 动态CDS归档
    • 增强ZGC垃圾回收器,不提交未使用的内存
    • 重新实现Socket API
    • 增强switch表达式(预览功能)
    • 文本块(预览功能)
经典项目
  • 经典项目
    • 家庭记账软件

    • 客户信息管理系统

    • Bank管理系统

      • Bank01
      • Bank02
      • Bank03
      • Bank04
      • Bank05
      • Bank06
      • Bank07
      • Bank08
    • 开发团队调度软件

      • 开发团队调度软件_参考版
      • 开发团队调度软件_改进版
    • 考试管理系统软件

  • other
    • Java学习线路

    • 廖雪峰Java教程

    • 安装JDK

    • IntelliJ_IDEA生成JavaDoc文档

    • clone或一个新的Interlij IDE项目到本地如何正常运行

    • IntelliJ IDEA的安装、配置与使用

      • IntelliJ_IDE常规设置
      • 让所有的IDEA工程都受影响的设置
    • JUnit单元测试--IntelliJ IDEA

    • 如何编译和运行包含package的java源文件

    • JDK API在线文档

    • java方法区以及static的内存分配图

    • URI、URL、URN联系与区别

    • float、double数据的内存存储方式

    • Java常用工具类

    • java中调用shell脚本

      • java中调用shell脚本
      • Runtime.exec()执行shell、cmd命令常见陷阱与完善
    • 一个Java字符串到底有多少个字符

    • java方法参数的值传递、引用传递.md

    • 一文搞懂JVM内存结构