1-J2SE基础
2022-01-05 16:34:28 0 举报
AI智能生成
j2se学习脑图
作者其他创作
大纲/内容
基础
java环境
JDK>JRE>JVM
javac 和 java 命令
.class 字节码文件 ->JVM
环境变量
JAVA_HOME
PATH
字符集
ASCII
Unicode
UTF-8
数据类型
基本数据类型
数字类型
整数
short 2个字节
int 4个字节
long 8个字节
浮点数
float 4个字节
double 4个字节
字符类型
char 2个字节
布尔类型
bool 1bit
引用类型
类
String 类
相同的字符串常量常量区只会存放一份
接口
数组
一组连续的地址空间
冒泡排序
java.util.Arrays 工具类
运算符
算术运算符
赋值运算符
关系运算符
逻辑运算符
位运算符
&与运算
| 或运算
^ 异或运算
~ 取反
<<左移
>>右移
关键字
public : 开放访问
protected:同一个包,子类可访问
default:同一个包
private:仅自己
protected:同一个包,子类可访问
default:同一个包
private:仅自己
finnal 关键字
static关键字
面向对象
设计原则
高内聚
低耦合
特性
封装
继承
多态
类
内部类
匿名内部类
Object类
代码块
普通代码块
构造代码块
静态代码块
同步代码块
常用类
字符串类
String,StringBuilder,StringBuffer
日期
Date
DateFormat
SimpleDataFormat
Calender
DateFormat
SimpleDataFormat
Calender
Math,File,Enum
接口
容器
两大接口
Collection
List
ArrayList
LinkedList
Set
HashSet
TreeSet
Map
HashMap
LinkedHashMap
TreeMap
I/O
标准输入输出
System.in
System.out
java中的流
四个流接口
InputStream,OutputStream
Reader,Writer
文件流
FileInputStream,FileOutputStream
InputStreamReader , OutputStreamReader
RandomAccessFile
字节数组,字符读写
ByteArrayInputStream ,ByteArrayOutputStream
CharArrayReader , CharArrayWriter
基本数据类型读写
DataInputStream 和 DataOutputStream 处理流
对象读写
ObjectInputStream 和 ObjectOutputStream
多线程管道
PipedInputStream 和 PipedOutputStream
带缓冲区的处理流
BufferedInputStream 和 BufferedInputStream 处理流
BufferedReader 和 BufferedWriter 处理流
分类
按流向
输入流,
输出流
按处理单元
字节流
字符流
子主题
节点流
处理流
第三方工具包
apache commons-io
网络编程
网络基础
IP
特殊ip
IP段
7层
物理层
数据链路层
网络层
传输层
会话层
表示层
应用层
数据链路层
网络层
传输层
会话层
表示层
应用层
4层
网络接口层(物理层,数据链路)
网际层(网络层)
传输层
应用层(会话,表示,应用层)
网络协议
java中的类
IP
java.net.InetAddress
TCP/IP
java.net.ServerSocket
accept 阻塞获取连接
流
java.net.Socket
UDP
java.net.DatagramSocket
发送数据包
接收数据包
泛型<>
通配符 ?
泛型 extends:
//定义 list里面 可能是 Person类的任意一个子类,无下限。
List<? extends Person> l3 = new ArrayList<>();
//这句是会报错的,通配符 并不能确定是具体 哪个子类, 编辑过程中 比如 人,学生,好学生,
//编译器无法 把 人 具象化 为学生 所以插入编译不通过。这是一个和多态相反的过程。
l3.add(new Student());
l3.add(new Person());
List<? extends Person> l3 = new ArrayList<>();
//这句是会报错的,通配符 并不能确定是具体 哪个子类, 编辑过程中 比如 人,学生,好学生,
//编译器无法 把 人 具象化 为学生 所以插入编译不通过。这是一个和多态相反的过程。
l3.add(new Student());
l3.add(new Person());
泛型 下限 super
//定义list里面至少是个学生,或者父类 人。 有下限
List<? super Student> l1 = new ArrayList<>();
//这里不会报错,因为集合中 至少是一个 Student,也就是 子类对象可能转父类形式,是符合多态的。
Student student = new Student(); //学生
ManStudent manStudent = new ManStudent();//男学生
l1.add(student);
l1.add(manStudent);
List<? super Student> l1 = new ArrayList<>();
//这里不会报错,因为集合中 至少是一个 Student,也就是 子类对象可能转父类形式,是符合多态的。
Student student = new Student(); //学生
ManStudent manStudent = new ManStudent();//男学生
l1.add(student);
l1.add(manStudent);
泛型的擦除
多线程基础
创建线程
继承 Thread 类
实现runable接口
常用方法
线程状态
NEW 新生态
RUNNABLE 运行态
BLOCKED 阻塞态
WAITING
TIMED_WAITING
synchronized
Object wait和notify
线程池
常用方法
工作原理
corePoolSize=> 线程池里的核心线程数量
maximumPoolSize=> 线程池里允许有的最大线程数量
keepAliveTime=> 空闲线程(核心线程池之外的,空闲的线程)存活时间
unit=> keepAliveTime的时间单位,比如分钟,小时等
workQueue=> 缓冲队列
threadFactory=> 线程工厂用来创建新的线程放入线程池
handler=> 线程池拒绝任务的处理策略,比如抛出异常等策略
线程池的分类
ThreadPoolExecutor
Executors.newCachedThreadPool();
Executors.newFixedThreadPool(2)
Executors.newSingleThreadExecutor();
ScheduledThreadPoolExecutor
ForkJoinPool
阻塞队列
ArrayBlockingQueue
LinkedBlockingDeque
DelayQueue
PriorityBlockingQueue
SynchronousQueue
拒绝策略
Lanbda表达式
特点
函数式编程
自动推断类型
简洁
语法
基础式
(参数)->{实现体}
::方法引用式
静态方法引用: 类名::静态方法
实例方法引用: 对象实例::方法
对象方法引用: 类名:: 方法 根据泛型的类型,参数类型,顺序,自动传值
构造方法引用: 类名::new
函数式接口
只有一个待实现方法的接口,可以作为函数式接口
内置函数式接口
StreamAPI
特点
1、 代码简洁,取代for循环
2、 支持并行。parallel
3、 支持 过滤,查询,汇总,聚合等操作。
2、 支持并行。parallel
3、 支持 过滤,查询,汇总,聚合等操作。
创建方式
1、 通过数组
2、 通过集合
3、 通过Stream.generate方法来
4、通过Stream.iterate方法
中间操作
1、 过滤 filter
2 、去重 distinct
3、排序 sorted
4、截取 limit、skip
5、转换 map/flatMap
6、其他操作 peek
终止操作
1、循环 forEach
2、计算 min、max、count、 average
3、匹配 anyMatch、 allMatch、 noneMatch、 findFirst、 findAny
4、汇聚 reduce
收集器 toArray collect
自定义注解
元注解
@Retention
@Target
@Documented
@Inherited
@Repeatable
0 条评论
下一页