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.闡述對象回收的前提條件。
對象回收是在沒有任何指針指向該堆空間的時候回收,這個過程不是實時的。