按读写:Reader 和 Writer

按输入输出:InputStream 和 OutputStream

按类别:节点流 和 处理流(比如缓冲流)

其实IO流的学习让我头疼的是对编码集的不了解,通过不断测试算是有了些结论,以下是一些个人理解:

  1. Java的io流很有意思,首先我们要知道java.exe会自动识别Java文件的编码格式,Java文件被编译后会以Unicode格式编码为class文件
  2. Javac.exe执行,JVM 对 class 文件做解密,并通过执行引擎执行该代码
  3. 很多人可能会纳闷为啥用 unicode 做 jvm 的编码,这个我的理解如下
    1. unicode 仅仅提供了编码表,并未真正落地,也就是未实现二进制的存储,这个可以去看些相关文章了解
    2. 所以说 unicode 是一个未和字节绑定的编码格式(根本就不可能实现,编码表和存储实现只能二选一),非常适合面向对象这种语言的使用
    3. 比如 class 文件完全是 jvm 操作的文件,执行时只需要让 jvm 能够正确实现你的 Java 文件内容即可,jvm 不用从class 文件中知道具体的代码字符是什么意思,只需要匹配到对应的字符映射即可。jvm 解码 class 文件的内容,这个时候会通过 unicode 字符编码把对应的字符生成二进制代码以驱使系统资源最终实现
    4. 那么驱动系统资源的二进制代码是哪种字符编码转过来的呢,这个时候你可使用cmd来检查本机系统的编码格式,图片附到了下面
    5. 还有一些特殊情况就是jvm特殊指示转二进制的编码格式,比如io流中,转换流的使用,可以通过自定义编码格式让jvm 通过规定的编码格式把 unicode 的字符映射转换成二进制。
  4. 不知道有没有小伙伴疑惑为什么显示屏可以实时的显示正确的数据格式呢,其实显示屏是同步了内存的数据格式的,具体的实现方式恕我愚钝,还没搞懂,希望大神留言Java_IO流

相关文章:

  • 2021-06-26
  • 2021-12-24
  • 2022-12-23
  • 2022-12-23
  • 2021-04-23
  • 2022-12-23
  • 2021-05-18
  • 2021-10-03
猜你喜欢
  • 2021-05-12
  • 2022-12-23
  • 2022-12-23
  • 2022-01-04
  • 2021-10-19
  • 2021-09-29
相关资源
相似解决方案