1.阐述BufferedReader和BufferedWriter的工作原理,
是否缓冲区读写器的性能恒大于非缓冲区读写器的性能,为什么,请举例说明?
不一定,
bufferedreader:从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取;
bufferedwriter:将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入;
缓冲区读写器的性能恒大于非缓冲区读写器的性能。
2.阐述HashSet与HashMap的异同。
Hashset:Hashset集合内部是通过HashMap进行实现的。使用的是HashMap中key部分。实现set接口,set继承collection接口
HashMap:实现Map接口,Map接口与Collection接口是同级的。
它们都具有不重复的特点,采用hash机制进行存储。
HashMap存储的是key - value , HashSet内部是通过HashMap进行的,只不过vlaue 部分传输的是一个垃圾值.
3.Charset类操作:isSupport()
3.1)通过该类验证平台是否支持一下字符集:
gb2312
GB2312
gbk
GBK
utf-8
utf8
iso8859-1
iso-8859-1
for (String charset: Charset.availableCharsets().keySet()){
System.out.println(charset);
}
3.2)取出平台默认的字符集
System.out.println(Charset.defaultCharset().name());
4.FileReader.getEncoding();
5.使用FileInputStream + FileOutputStream / BufferedInputStream + BufferedOuputStream
实现大文件复制,比较复制效率。
package com.it18zhang.iodemo;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class IoDemo {
public static void main(String[] args) {
String src = "D:/HPBladeSystemOnboardAdministrator用户指南.pdf";
String desc = "d:/copyAsset.pdf";
FileCopybyInputStrem(src,desc);
try {
FileCopyByBuffered(src,desc);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void FileCopybyInputStrem(String src,String desc) {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream(src);
fos = new FileOutputStream(desc);
int len = 0;
while ((len = fis.read()) != -1){
fos.write(len);
fos.flush();
}
System.out.println("Over");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fis.close();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void FileCopyByBuffered(String src,String desc) throws Exception {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(desc));
byte[] buf = new byte[1024 * 4];
int len = 0;
while((len = bis.read(buf)) != -1){
bos.write(buf, 0, len);
bos.flush();
}
bos.close();
bis.close();
System.out.println("Over");
}
}
6.阐述对象回收的前提条件。
对象回收是在没有任何指针指向该堆空间的时候回收,这个过程不是实时的。