前言

从Java 8引入的一个很有趣的特性是Optional类。Optional类主要解决的问题是臭名昭著的空指针异常(NullPointerException)——每个Java程序员都非常了解的异常。

本质上,这是一个包含有可选值的包装类,这意味着Optional类既可以含有对象也可以为空。

Optional是Java实现函数式编程的强劲一步,并且帮助在范式中实现。但是Optional 的意义显然不止于此。

前言

最近一段时间忙着准备面试,终于有一点闲暇的时间学点新东西了,话不多少,正式进入正题。

Java NIO 简介

Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。

多线程的引入

  • 1.什么是线程
    • 线程是程序执行的一条路径, 一个进程中可以包含多条线程
    • 多线程并发执行可以提高程序的效率, 可以同时完成多项工作
  • 2.多线程的应用场景
    • 红蜘蛛同时共享屏幕给多个电脑
    • 迅雷开启多条线程一起下载
    • QQ同时和多个人一起视频
    • 服务器同时处理多个客户端请求

1_IO流(字符流FileReader)

  • 1.字符流是什么
    • 字符流是可以直接读写字符的IO流
    • 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符转为字节再写出.
  • 2.FileReader
    • FileReader类的read()方法可以按照字符大小读取
1
2
3
4
5
6
7
FileReader fr = new FileReader("aaa.txt"); // 创建输入流对象,关联aaa.txt
int ch;
while ((ch = fr.read()) != -1) { // 将读到的字符赋值给ch
System.out.println((char) ch); // 将读到的字符强转后打印
}

fr.close(); // 关流

1_IO流(IO流概述及其分类)

  • 1.概念
    • IO流用来处理设备之间的数据传输
    • Java对数据的操作是通过流的方式
    • Java用于操作流的类都在IO包中
    • 流按流向分为两种:输入流,输出流。
    • 流按操作类型分为两种:
      • 字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的
      • 字符流 : 字符流只能操作纯字符数据,比较方便。