从方向上来分类
输入流:数据源到程序(InputStream、Reader读进来)
输出流:程序到目的地(OutputStream、Writer写出去)
从功能分类:
节点流:可以直接从数据源或目的地读写
处理流(包装流):不直接链接数据源或目的地,是其他流进行封装,主要是简化操作或提高性能。
节点流是io操作的第一线,所有操作必须通过他们进行。
处理对象
字节流:按照字节读取数据(InputStream、OutputStream),底层是基于字节流
字符流:按照字符读取数据,Reader、Writer,因为文件编码不同,有了对字符进行高效操作的字符流对象。
序列化也是一种对象服务,就是把内存中的对象序列化成流、或者把流反序列化成对象。
需要实现2个接口:
void Serialize(Stream stream,object o) 把对象序列化到流中
object Deserialize(Stream stream) 把流反序列化成对象
@Override
@Deprecated 定义在Java.lang.Deprecated中,此注解可以用于修饰方法、属性、类,表示不鼓励程序员使用这样的元素,通常是因为他很危险或者存在更好的选择。
@SupressWarnings: 定义在java.lang.SupressWarnings中,用来抑制编译时的警告信息。
@SupressWarnings("all")
@SupressWarnings("unchecked")
@SupressWarnings(value={"unchecked", "deprecation"})
负责注解其他注解,java定义了4个标注的meta-annotation类型,用来提供对其他annotation做说明。
元注解及其支持的类在java.lang.annotation包中可以找到
@interface 自定义注解,自动继承了java.lang.annotation.Annotation
Java是静态语言,但是可以成为“准动态语言”,即Java具有一定的动态性,可以利用反射机制获得类似动态语言的特征,Java的动态性让Java编程更加灵活,但是牺牲了效率和安全性
Reflection(反射)是Java被视为动态语言的关键,反射机制允许程序在执行期间借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。
Class c = Class.forName("java.lang.String")
Java反射机制提供的功能:
有点:动态创建对象和编译,体现出灵活性
缺点:
主要API
java核心库 rt.jar
双亲委派机制,的确是防止同名包、类与 jdk 中的相冲突,实际上加载类的时候,先通知 appLoader,看 appLoader 是否已经缓存,没有的话,appLoader 又委派给他的父类加载器(extLoader)询问,看他是不是能已经缓存加载,没有的话,extLoader 又委派他的父类加载器(bootstrapLoader)询问,BootstrapLoader看是不是自己已缓存或者能加载的,有就加载,没有再返回 extLoader,extLoader 能加载就加载,不能的话再返回给 appLoader 加载,再返回的路中,谁能加载,加载的同时也加缓存里。正是由于不停的找自己父级,所以才有 Parents 加载机制,翻译过来叫 双亲委派机制。
name.setAccessible(true);
## 反射操作泛型
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。