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 字符集

遇到问题:

测试缓冲区跟非缓冲区性能问题。