zoukankan      html  css  js  c++  java
  • java 核心编程——IO流之字符流和字节流之间的区别(五)

    1.字节和字符的区别

      一个字节是8位,只能有256个值,如果用来表示文字,可以表示ASCII码,包括控制字符,数字,符号,英文字母,西欧字母,制表符。但是中文少说有几千汉字,所以一个字节表示不了,所以就用两个字节,编码方案有GB2312,GBK,Big5等。后来又出现统一字符集,把各个常用语言都容纳进来,肯定1个字节也放不下。

      Java使用Unicode,用char这个数据类型表示一个多字节的字符。
     
    2.字节流和字符流的区别

      2.1字节流操作的基本单元为字节;字符流操作的基本单元为Unicode码元。

      2.2字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的

      2.3字节流在操作文件时,即使不关闭资源(close方法),文件也能输出,但是如果字符流不使用close方法的话,则不会输出任何内容,说明字符流用的是缓冲区,并且可以使用flush方法强制进行刷新缓冲区,这时才能在不close的情况下输出内容

      2.4字节流通常用于处理二进制数据,实际上它可以处理任意类型的数据,但它不支持直接写入或读取Unicode码元;字符流通常处理文本数据,它支持写入及读取Unicode码元。

    3.那开发中究竟用字节流好还是用字符流好呢?

      在所有的硬盘上保存文件或进行传输的时候都是以字节的方法进行的,包括图片也是按字节完成,而字符是只有在内存中才会形成的,所以使用字节的操作是最多的。字符流一次读取两个字节,视情况,里边有汉字之类的情况都选择使用字符流,其他的一般字节流都能搞定,其实字符流归根结底使用的还是字节流,因为计算机只识别这些个玩意,只是转化了而已。



  • 相关阅读:
    Checking Types Against the Real World in TypeScript
    nexus pip proxy config
    go.rice 强大灵活的golang 静态资源嵌入包
    几个golang 静态资源嵌入包
    rpm 子包创建学习
    Rpm Creating Subpackages
    ava 类似jest snapshot 功能试用
    ava js 测试框架基本试用
    The Architectural Principles Behind Vrbo’s GraphQL Implementation
    graphql-compose graphql schema 生成工具集
  • 原文地址:https://www.cnblogs.com/wwyx-xi/p/7514292.html
Copyright © 2011-2022 走看看