面试题答案
一键面试- BufferedInputStream 和 BufferedOutputStream:
- 这两个流在内部设置了缓冲区。当使用
BufferedInputStream
读取数据时,它会一次性从底层输入流读取较多的数据到缓冲区中,后续的读取操作首先从缓冲区获取数据,只有当缓冲区数据读完时才再次从底层输入流读取。同理,BufferedOutputStream
写入数据时,先将数据写入缓冲区,当缓冲区满或者调用flush
方法时,才将缓冲区的数据一次性写入到底层输出流。这样减少了与底层设备交互的次数,从而提升性能。
- 这两个流在内部设置了缓冲区。当使用
- BufferedReader 和 BufferedWriter:
- 对于字符流,
BufferedReader
和BufferedWriter
同样利用了缓冲区。BufferedReader
每次读取一行数据时,从缓冲区获取,缓冲区数据不足时从底层字符输入流填充。BufferedWriter
写入数据先到缓冲区,通过flush
或者缓冲区满时写入底层字符输出流。减少了频繁的字符读写操作对性能的损耗,尤其是在处理文本数据时,按行读取和写入的效率大幅提升。
- 对于字符流,
- DataInputStream 和 DataOutputStream:
- 这两个流用于处理基本数据类型和字符串的读写。它们通过特定的方法,如
readInt
、writeDouble
等,能够高效地读写各种基本数据类型,而不需要像普通流那样将数据转换为字节数组等复杂操作。在处理数值类型数据时,直接按照数据类型的字节长度进行读写,减少了数据转换的开销,提升了针对基本数据类型和字符串操作的 IO 性能。
- 这两个流用于处理基本数据类型和字符串的读写。它们通过特定的方法,如