java
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
- JAVA语言概述
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)
- 定义
- 方法重写规则
- 方法重写与方法重载的区别
- 关键字--this
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接口的改进
- 单例设计模式(Singleton)
day11_高级类特性2:内部类、接口与抽象类的对比、工厂模式、代理模式
- day11_高级类特性2
- 工厂方法设计模式(factory method)
- 概述
- 应用场景
- 示例
- 工厂方法设计总结
- 代理模式(proxy)
- 概述(./day11/README.md#)
- 示例
- 接口和抽象类的关系
- 类的成员之五:内部类
- 内部类示例
- 匿名内部类
- 匿名内部示例
- 工厂方法设计模式(factory method)
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遍历
- java集合概述
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类
- String类
day19_java反射机制:通过反射获取类的完整结构、方法、属性、构造器,java动态代理
- day19_java反射机制
- java reflection
- 反射机制提供的功能
- 反射相关的主要API
- Class类主要方法
- 反射示例
- 获取类的Class实例的4种方法
- 示例
- JAVA类加载过程
- ClassLoader
- 类加载器一个主要方法
- 通过反射调用类的完整结构
- 获取实现的接口
- 获取所继承的父类
- 获取全部的构造器
- 获取全部的方法
- 获取全部的属性(Field)
- 获取注解(Annotation)
- 泛型相关
- 获取类所在的包
- 获取内部类
- 数字形式修饰符转String修饰符
- 示例
- 通过反射调用类中指定的方法、属性、构造器
- 调用指定的方法
- 调用指定的属性
- 调用指定的构造器
- 遍历打印指定类的成员(属性变量、构造器、方法)
- JAVA动态代理
- 静态代理示例
- 动态代理示例
- 动态代理与AOP(Aspect Orient Programming面向切面编程)
- AOP代理示例
- java reflection
day20_网络编程:TCP socket、UDP socket、URL socket编程
- day20_网络编程
- 网络编程概述
- 通讯要素
- IP和端口
- InetAddress类(IP地址)、InetSocketAddress(IP、端口)
- 网络通信协议
- 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增强
- 更简单的编译运行程序
- 其他特性
- String类新增方法
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学习线路
-
安装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
-