1.阐述BufferedReader和BufferedWriter的工作原理,
是否缓冲区读写器的性能恒大于非缓冲区读写器的性能,为什么,请举例说明?
2.阐述HashSet与HashMap的异同。
3.Charset类操作:isSupport()
3.1)通过该类验证平台是否支持一下字符集:
gb2312
GB2312
gbk
GBK
utf-8
utf8
iso8859-1
iso-8859-1
3.2)取出平台默认的字符集
4.FileReader.getEncoding();
new String(,,,,,charset);
5.使用FileInputStream + FileOutputStream / BufferedInputStream + BufferedOuputStream
实现大文件复制,比较复制效率。
6.阐述对象回收的前提条件。
答:
1,
BufferedReader和BufferedWriter底层仍然采用的字符输入输出流,只是加入了缓冲技术。
使得在操作字符数据的时候,先将数据输入输出到缓冲区中,然后批量输入输出到物理文件,从而加快效率,降低磁盘IO压力。
缓冲区读写器的性能一定恒大于非缓冲区读写器的性能,因为批量导入导出避免了流对物理文件的频繁访问,从而提高IO性能。
2,
HashSet和HashMap的异同
同:都是集合,可以存储对象,并且HashSet底层采用的就是HashMap,使用的是HashMap的key部分,此外,两者都具有不重复的特点,都采用了哈希机制进行存储。
异:HashSet实现Set接口,Set继承Collection接口;HashMap实现Map接口,而Collection和Map是同一级的,
3,
package com.it18zhang.day13;
import java.nio.charset.Charset;
public class CharsetDemo {
public static void main(String[] args) {
// //取出支持的字符集
// for(String ch : Charset.availableCharsets().keySet()){
// System.out.println(ch);
// }
// System.out.println("-----------------");
System.out.println("gb2312\t::"+Charset.isSupported("gb2312"));
System.out.println("GB2312\t::"+Charset.isSupported("GB2312"));
System.out.println("gbk\t::"+Charset.isSupported("gbk"));
System.out.println("GBK\t::"+Charset.isSupported("GBK"));
System.out.println("utf-8\t::"+Charset.isSupported("utf-8"));
System.out.println("utf8\t::"+Charset.isSupported("utf8"));
System.out.println("iso8859-1\t::"+Charset.isSupported("iso8859-1"));
System.out.println("iso-8859-1\t::"+Charset.isSupported("iso-8859-1"));
System.out.println("default Charset is\t"+Charset.defaultCharset().displayName());
}
}
4,
package com.it18zhang.day13;
import java.io.FileNotFoundException;
import java.io.FileReader;
public class FileReaderEncodingDemo {
public static void main(String[] args) throws Exception {
FileReader fr = new FileReader("d:/aa.txt");
System.out.println("文件编码为"+fr.getEncoding());
String str = new String("a中国b人".getBytes(),"utf-8");
System.out.println(str);
String str1 = new String("a中国b人".getBytes(),"gbk");
System.out.println(str1);
}
}
5
package com.it18zhang.day13;
import java.io.*;
public class CopyFileDemo {
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream("d:/Koala.jpg");
FileOutputStream fos = new FileOutputStream("d:/copy_file1.jpg");
BufferedInputStream bufIn = new BufferedInputStream(new FileInputStream("d:/Koala.jpg"));
BufferedOutputStream bufOut = new BufferedOutputStream(new FileOutputStream("d:/copy_file2.jpg"));
Long startTime = System.currentTimeMillis();
int ch = 0;
while((ch=fis.read()) != -1){
fos.write((char)ch);
}
fos.flush();
fis.close();
fos.close();
Long endTime = System.currentTimeMillis();
System.out.println("FileInputStream+FileOutputStream花费了\t:"+(endTime-startTime));
startTime = System.currentTimeMillis();
byte[] bytes = new byte[1024];
int len = 0;
while((len = bufIn.read(bytes))!=-1){
bufOut.write(bytes,0,len);
}
bufOut.flush();
bufIn.close();
bufOut.close();
endTime = System.currentTimeMillis();
System.out.println("BufferedInputStream+BufferedOutputStream花费了\t:"+(endTime-startTime));
System.out.println("over");
}
}
6.阐述对象回收的前提条件。
答:当没有直接或者间接的引用到达对象时,该对象可以被jvm垃圾回收。
本文出自 “菜鸟成就数据之路” 博客,转载请与作者联系!
原文地址:http://liubx.blog.51cto.com/11235064/1790117