1.Java中IO流分为几种?
按功能分:输入流(input),输出流(output)
按类型分:字节流和字符流,区别时字节流是按8位传输以字节为单位输入输出数据,字符流是按16位传输以字符为单位。
怎么样会产生IO阻塞?
在IO的第一个阶段:准备数据。有很多时候数据在一开始还没有到达,这个时候就要等待足够的数据到来。而在用户进程这边,整个进程就会被阻塞。一直等到数据准备好了,它就会将数据拷贝到用户内存,然后返回结果,用户进程才解除阻塞的状态,重新运行起来。
IO的抽象类四个
字节流两个
InputStream
OutputStream
字符流两个
Reader
Writer
实现类
字节流中六个
FileInputStream
BufferedInputStream
ObjectInputStream
FileOutputStream
BufferedOutputStream
ObjectOutputStream
字符流实现类
FileterReader
BufferedReader
InPutStreamReader
FileterWriter
BufferWriter
OutPutStreamWriter
2.BIO,NIO,AIO,有什么区别
BIO:Block IO同步阻塞式IO,是传统IO,模式简单,使用方便,并发处理能力低
NIO:New IO同步非阻塞IO,是传统IO的升级,客户端和服务端通过Channel(通道)通讯。实现了多路复用
AIO:Asynchronous IO是NIO的升级,也叫NIO2,实现了异步非阻塞IO,异步IO的操作基于事件和回调机制。
浅拷贝和深拷贝
在拷贝数值时没有区别,在拷贝引用时浅拷贝拷贝的是地址值,数据操作的是同一个数据,深拷贝是全部拷贝,并开辟新的内存空间,数据操作的不是同一个数据