1.闡述BufferedReader和BufferedWriter的工作原理,
是否緩衝區讀寫器的性能恆大於非緩衝區讀寫器的性能,爲什麼,請舉例說明?
bufferedreader:從字符輸入流中讀取文本,緩衝各個字符,從而實現字符、數組和行的高效讀取;
bufferedwriter:將文本寫入字符輸出流,緩衝各個字符,從而提供單個字符、數組和字符串的高效寫入;
當char[]中的設置比讀取數據的小的話,那麼性能比非緩衝區讀寫器性能小。
2.闡述HashSet與HashMap的異同。
HashMap是K-V對,hashmap底層實現了散列算法,是一種基於關鍵詞的搜索算法,提升hashmap查找速度。hashmap通過hashcode得到一個地址然後equals比較鏈表中各元素,同時取出對應value值。
2.hashset用hashmap實現Key,實現了set接口,繼承collection接口
HashMap:實現map接口,用hash機制存儲,不重複,set和map是同一級的。
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.defaultChaset.name());
4.FileReader.getEncoding();
new String(,,,,,charset);
5.使用FileInputStream + FileOutputStream / BufferedInputStream + BufferedOuputStream
實現大文件複製,比較複製效率。
package com.it18zhang_13job.demo;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
/**
*
*使用FileInputStream + FileOutputStream / BufferedInputStream
* + BufferedOuputStream 實現大文件複製,比較複製效率。
*
*/
public class FileCopy {
public static void main(String[] args) {
long startTimeMillis = System.currentTimeMillis();
File flsou = new File("E:/a.mp3");
fileInputStreamCopy(startTimeMillis, flsou);
bufferedInputStreamCopy(startTimeMillis, flsou);
}
private static void fileInputStreamCopy(long startTimeMillis, File flsou) {
File fldec = new File("E:/aCopy.mp3");
try {
if (!fldec.exists()) {
fldec.createNewFile();
}
FileInputStream fis = new FileInputStream(flsou);
FileOutputStream fos = new FileOutputStream(fldec);
int read = fis.read();
while (read != -1) {
fos.write(read);
read = fis.read();
}
fos.flush();
fis.close();
fos.close();
long endTimeMillis = System.currentTimeMillis();
System.out.println("FileInputStream + FileOutputStream的花費時間:" + (endTimeMillis - startTimeMillis) + "毫秒!");
} catch (Exception ex) {
ex.printStackTrace();
}
}
private static void bufferedInputStreamCopy(long startTimeMillis, File flsou) {
File fldec = new File("E:/aCopy1.mp3");
try {
if (!fldec.exists()) {
fldec.createNewFile();
}
FileInputStream fis = new FileInputStream(flsou);
FileOutputStream fos = new FileOutputStream(fldec);
BufferedInputStream bis = new BufferedInputStream(fis);
BufferedOutputStream bos = new BufferedOutputStream(fos);
byte[] buf = new byte[1024];
int len;
while ((len = bis.read(buf)) != -1) {
bos.write(buf, 0, len);
}
fos.flush();
fis.close();
fos.close();
long endTimeMillis = System.currentTimeMillis();
System.out.println("BufferedInputStream + BufferedOuputStream的花費時間:" + (endTimeMillis - startTimeMillis)
+ "毫秒!");
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
6.闡述對象回收的前提條件。
沒有任何指向堆空間的指針,則回收