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的工作原理,
是否缓冲区读写器的性能恒大于非缓冲区读写器的性能,为什么,请举例说明?
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
System.out.println("gb2312验证结果:" + Charset.isSupported("gb2312"));
3.2)取出平台默认的字符集
package com.it18zhang14;
import java.nio.charset.Charset;
public class CharsetDemo {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println(Charset.defaultCharset().name());
for(String key:Charset.availableCharsets().keySet()){
System.out.println(key);
}
}
}
4.FileReader.getEncoding();
new String(,,,,,charset);
5.使用FileInputStream + FileOutputStream / BufferedInputStream + BufferedOuputStream
实现大文件复制,比较复制效率。
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.阐述对象回收的前提条件。
1)对象的失去引用
2)对象离开作用域
**********************************************************************************
学习内容:
java IO 字符集
遇到问题:
测试缓冲区跟非缓冲区性能问题。