2019-04-25 Java基础复习 泛型 IO

途中、感受

泛型

List<Object> list1;
List<String> list2;
list1 与 list2 属于并列关系,而子父类关系。

泛型通配符

List<? extends Xxx> extends 相当于 <= ,可以放Xxx及其子类
List<? super Xxx> super 相当于 >= ,可以放Xxx及其父类

字符流

FileReader 使用 char[] 读取
read(char[] c)
InputStreamReader、OutputStreamWriter属于字符流,也使用 char[] 读取

字节流

FileInputStream 使用byte[] 读取
is.read(byte[] b)

缓冲流

  • flush() 当缓存达到最大时,会自动flush()
  • readLine() 一行一行读
  • 关闭外层缓冲流时,会自动关闭内层流,所以内层流的关闭可以省略。

标准输入、输出流

标准输入流: System.in

BufferedReader br = null;
        try {
            InputStreamReader is = new InputStreamReader(System.in); // 字符流对象
            br = new BufferedReader(is);
            while (true) {
                System.out.println("请输入:");
                String data = br.readLine(); // 一行一行读
                if ("e".equalsIgnoreCase(data) || "exit".equalsIgnoreCase(data)) {
                    System.out.println("程序结束");
                    break;
                }
                System.out.println(data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

输出流:System.out

序列化

  • ObjectInputStream、ObjectOutputStream将对象序列化为跟平台无关的二进制流。
  • 需要进行序列化的对象需要实现Serializable接口,且对象的每个属性是可序列化的(实现了Serializable接口,基本数据类型都是可序列化的)
  • ObjectInputStream、ObjectOutputStream 不能序列化 static transient修饰的变量。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。