感谢大家对IT十八掌大数据的支持,今天的作业如下:
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
3.2)取出平台默认的字符集
答:
package com.it18zhang_13job.demo;
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);
答:
package com.it18zhang_13job.demo;
import java.nio.charset.Charset;
/**
*
* @author 王威-网络班 第3题 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 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.阐述对象回收的前提条件。
答:
1)对象的失去引用
2)对象离开作用域