JAVA 知识点整理

发布时间:2019-11-19 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了JAVA 知识点整理脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

泛型

本质 类型参数化,作用就是将类型转换问题从运行时转移到编译期
语法 1 定义在类上 class ClassName<T>{}
2 定义在方法上 <T> void methodName(T t){}
3 通配符 <?> 可限制传入参数,但无法使用 泛型参数 需类型转换
4 上限 <? extends T > 接受 T及任意子类
5 下限 <? super T> 接受 T及任意父类

集合

存放数据的集合,JAVA中实现Collection和Map的都是集合

JAVA 知识点整理

Vector:线程安全,基于动态数组,增长率为100%,ArrayList为50%
ArrayList:基于动态数组,查询快,增删慢。
LinkedList:基于链表,增删快,查询满。

PS : Hash散列算法 hash &amp; (length-1) 通过Hash散列算法获取下标,HashCode冲突且equals为false时存入链表。当length为2的N次方时,可以最大程度减小HashCode冲突。

HashSet:底层由HashMaP实现,允许null,唯一,无序
LinkedHashSet:底层由LinkedHashMap实现(适配器模式),不允许null,唯一,按插入顺序排序
TreeSet:底层由TreeMap实现,不允许null,唯一,按排序规则排序

映射集合(键值对)
HashMap:基于Hash散列算法,键唯一,允许null,无序
LinkedHashMap:继承HashMap,键唯一,不允许null,按插入顺序排序
TreeMap:键唯一,不允许null,按排序规则排序,底层基于红黑树

HashTable:线程安全
ConcurrentHashMap:线程安全,锁分离

JAVA 知识点整理

IO

本质 数据传输
分类 数据类型 字节流
字符流
数据流向 输入流
输出流
输入流 字节流 InputStream 字节输入流接口
ByteArrayInputStream 字节数组输入流
FileinputStream 文件输入流
BufferedInputStream 高级流 缓存输入流
字符流 Reader 字符输入流接口
InputStreamReader 转换流 字符输入流 可指定字符集
BufferedReader 高级流 缓存字符输入流
输出流 字节流 outputStream 字节输出流接口
ByteArrayOutputStream 字节数组输出流
FileOutputStream 文件输出流
BufferedOutputStream 高级流 缓存输出流
字符流 WrITer 字符输出流接口
OutputStreamWriter 转换流 字符输出流 可指定字符集
BufferedWriter 高级流 缓存字符输出流
PRintWriter 高级流 缓存字符输出流 自动行刷新

多线程

多线程 并发,合理使用可以提高效率,CPU给每个线程分配时间片(几十ms),线程有创建与上下文切换的开销
线程状态 新建 NEW
就绪 RUNNABLE
运行 RUNNING
阻塞 BLOCKED
死亡 DEAD
创建线程 1 继承Thread
2 实现Runnalbe接口
3 实现Callable接口
线程池

JAVA 知识点整理

线程并发 三大特性 原子性
有序性
可见性
同步方案 1 volatile 类型修饰符 保证可见性
2 Synchronized 同步代码块,可修饰方法 代码块
3 ReentrantLock 显示获取/释放锁
线程操作 1 sleep() 使线程进入阻塞,可指定毫秒值,不释放锁
2 wait()/notify()/notifyAll() 等待(阻塞)唤醒(就绪)机制,可指定毫秒值,释放锁
3 yield() 使线程进入就绪,不释放锁
4 join() 当前线程进入阻塞,直到join线程执行结束,进入就绪,释放锁

反射

反射 反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性。
主要功能 1 在运行时判断一个对象所属的类
2 在运行时构造任意一个类的对象
3 在运行时判断任意一个类所具有的成员变量和方法(通过反射甚至可以调用private方法)
4 在运行时调用任意一个对象的方法
语法 注意: 调用私有属性时,需setAccessible(True)跳过java语言访问检查,否则抛出IllegalAccessException
获取Class 1 Class.forName(classname)
2 类名.class
3 对象.getClass()
对象 无参构造器 newInstance() 调用无参构造器创建对象并返回
未定义无参构造器时,抛出InstantiationException
获取构造器 1 getConstructor([tyPEs]) 获取指定参数类型列表的公有构造器
2 getConstructors() 获取所有公有构造器
3 getDeclaredConstructor([types]) 获取指定参数类型列表的构造器
4 getDeclaredConstructors() 获取所有构造器
调用构造器 构造器对象.newInstance([params]) 创建对象,调用私有构造器时, 请注意
方法 获取方法 1 getMethod(name[,types]) 获取指定方法名,参数类型列表的公有方法
2 getMethonds() 获取所有公有方法,包括继承类的公有方法
3 getDeclaredMethod(name[,types]) 获取指定方法名,参数类型列表的方法,但不包括继承方法
4 getDeclaredMethods() 获取所有方法,但不包括继承方法
调用方法 方法对象.invoke(obj[,params]) 调用指定对象方法,调用私有方法时, 请注意
字段 获取字段 1 getField(name) 获取指定字段名的公有字段
2 getFields() 获取所有公有字段,包括继承类的公有方法
3 getDeclareDField(name) 获取指定字段名的字段,但不包括继承字段
4 getDeclaredFields() 获取所有字段,但不包括继承字段
操作字段 字段对象.set(obj,val) 设置指定对象字段属性
字段对象.get(obj) 获取指定对象字段属性
操作私有字段时,请注意

脚本宝典总结

以上是脚本宝典为你收集整理的JAVA 知识点整理全部内容,希望文章能够帮你解决JAVA 知识点整理所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。