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)对象离开作用域
原文:http://11227677.blog.51cto.com/11217677/1792339