1.阐述BufferedReader和BufferedWriter的工作原理,
是否缓冲区读写器的性能恒大于非缓冲区读写器的性能,为什么,请举例说明?
答:
BufferedReader:从字符输入流读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取;
BufferedWriter:将文本写入字符输出流,缓冲各个字符,从而提供单个字符、驻足和字符串的高效写入;缓冲区读写器的性能恒大于非缓冲区读写器的性能。
2.阐述HashSet与HashMap的异同。
答:
HashSet:HashSet集合内部是通过HashMap进行实现的。使用的是HashMap中key部分,实现set接口,set继承collection接口
HashMap;实现Map接口,Map接口与collection接口是同级的。
他们都具有不重复的特点,采用hash机制进行存储。
3.Charset类操作:isSupport()
答:
3.1)通过该类验证平台是否支持一下字符集:
gb2312
GB2312
gbk
GBK
utf-8
utf8
iso8859-1
iso-8859-1
3.2)取出平台默认的字符集
import java.nio.charset.Charset; import java.util.HashMap; import java.util.Map; public class CharsetApp { public static void main(String[] args) { /** * 迭代所有字符集名称 */ for(String key : Charset.availableCharsets().keySet()){ System.out.println(key); } System.out.println(Charset.defaultCharset().name()); Map<String,String> map = new HashMap<String,String>(); map.put("key001", "tom"); map.put("key001", "tomas"); System.out.println(map.get("key001")); } }
4.FileReader.getEncoding();
new String(,,,,,charset);
import java.nio.charset.Charset;
/**
*
*
*/
public class CharsetTest {
public static void main(String[] args) {
// 验证字符集
System.out.println("gb2312验证结果:" + Charset.isSupported("gb2312"));
System.out.println("GB2312验证结果:" + Charset.isSupported("GB2312"));
System.out.println("gbk验证结果:" + Charset.isSupported("gbk"));
System.out.println("GBK验证结果:" + Charset.isSupported("GBK"));
System.out.println("utf-8验证结果:" + Charset.isSupported("utf-8"));
System.out.println("utf8验证结果:" + Charset.isSupported("utf8"));
System.out.println("iso8859-1验证结果:" + Charset.isSupported("iso8859-1"));
System.out.println("iso-8859-1验证结果:" + Charset.isSupported("iso-8859-1"));
// 获取平台默认的字符集
Charset defaultCharset = Charset.defaultCharset();
System.out.println("系统默认的字符集:" + defaultCharset.displayName());
}
}
5.使用FileInputStream + FileOutputStream / BufferedInputStream + BufferedOuputStream
实现大文件复制,比较复制效率。
答:
package test_13day作业; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; //使用FileInputStream + FileOutputStream / BufferedInputStream + BufferedOuputStream //实现大文件复制,比较复制效率。 public class teat { public static void main(String[] args) throws IOException { long startTimeMillis = System.currentTimeMillis(); File fsou = new File("D:/w.bibis"); FileInputStreamCopy(startTimeMillis, fsou); BufferedInputStreamCopy(startTimeMillis, fsou); } // 实现文件输入输出的时间 private static void FileInputStreamCopy(long startTimeMillis, File fsou) throws IOException { try { if (!fsou.exists()) { fsou.createNewFile(); } File fdec = new File("D:/w.bibis"); FileInputStream fls = new FileInputStream(fsou); FileOutputStream fos = new FileOutputStream(fdec); int readLen = fls.read(); while (readLen != -1) { fos.write(readLen); readLen = fls.read(); } fos.flush(); fls.close(); fos.close(); long endTimeMillis = System.currentTimeMillis(); System.out.println("FileInputStream + FileOutputStream 花费时间:" + (endTimeMillis - startTimeMillis)); } catch (FileNotFoundException e) { e.printStackTrace(); } } private static void BufferedInputStreamCopy(long startTimeMillis, File fsou) { try { if (!fsou.exists()) { fsou.createNewFile(); } File fdec=new File("D:/jiji.txt"); FileInputStream fis=new FileInputStream(fsou); FileOutputStream fos=new FileOutputStream(fdec); BufferedInputStream bis=new BufferedInputStream(fis); BufferedOutputStream bos=new BufferedOutputStream(fos); byte[] buf=new byte[1024]; int readLen=0; while((readLen=bis.read(buf))!=-1){ bos.write(buf, 0, readLen); } bos.close(); bis.close(); fos.close(); fis.close(); long endTimeMillis=System.currentTimeMillis(); System.out.println(" BufferedInputStream + BufferedOuputStream花费时间"+(endTimeMillis - startTimeMillis)); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
6.阐述对象回收的前提条件。
答:
1)对象的失去引用
2)对象离开作用域