字符流和字节流的区别是什么

字符流和字节流的区别在于以下几个方面:1、两者的组成不同;2、两者的处理不同。两者的组成不同是指,字节流是由字节组成的,而字符流是由字符组成的。字符流是采用好似UTF编码,支持中文的。

一、区别

1、两者的组成不同:

字节流的组成:字节流是由字节组成的。
字符流的组成:字符流是由字符组成的。

2、两者的处理不同:

字节流的处理:主要用在处理二进制数据,它是按字节来处理的但实际中很多的数据是文本。
字符流的处理:按虚拟机的encode来处理,也就是要进行字符集的转化。

二、流的概念

在编程中是一种抽象的概念,就好比“水流”,从一段流向另一端

在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。

程序中的输入输出都是以流的形式保存的,流中保存的实际上全都是字节文件。

三、什么是字节流,什么是字符流

字节流: 它处理单元为1个字节(byte),操作字节和字节数组,存储的是二进制文件,如果是音频文件、图片、歌曲,就用字节流好点(1byte = 8位);

字符流: 它处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,如果是关系到中文(文本)的,用字符流好点(1Unicode = 2字节 = 16位);

所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列。

字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。

字节流是最基本的,所有的InputStrem和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的 但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化 这两个之间通过 InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String来关联 在实际开发中出现的汉字问题实际上都是在字符流和字节流之间转化不统一而造成的。

延伸阅读

ASCII 码

每一个二进制位(bit)有01两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000011111111

上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为 ASCII 码,一直沿用至今。

ASCII 码一共规定了128个字符的编码,比如空格SPACE是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的一位统一规定为0

Unicode 的问题

需要注意的是,Unicode 只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。

比如,汉字的 Unicode 是十六进制数4E25,转换成二进制数足足有15位(100111000100101),也就是说,这个符号的表示至少需要2个字节。表示其他更大的符号,可能需要3个字节或者4个字节,甚至更多。

这里就有两个严重的问题,名列前茅个问题是,如何才能区别 Unicode 和 ASCII ?计算机怎么知道三个字节表示一个符号,而不是分别表示三个符号呢?第二个问题是,我们已经知道,英文字母只用一个字节表示就够了,如果 Unicode 统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是0,这对于存储来说是极大的浪费,文本文件的大小会因此大出二三倍,这是无法接受的。

它们造成的结果是:1)出现了 Unicode 的多种存储方式,也就是说有许多种不同的二进制格式,可以用来表示 Unicode。2)Unicode 在很长一段时间内无法推广,直到互联网的出现。

文章标题:字符流和字节流的区别是什么,发布者:小编,转载请注明出处:https://worktile.com/kb/p/39080

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月21日 下午1:01
下一篇 2023年2月21日 下午2:27

相关推荐

  • 什么是超级APP

    超级APP,是指那些拥有庞大的用户数,成为用户手机上的“装机必备”的基础应用。各大移动互联网企业提出超级APP概念,给出对超级APP的不同解释。移动互联网供应商给出的答案是:超级APP就应该超级个性化,甚至应该是个性化中的个性化。 一、什么是超级APP 超级APP,是指那些拥有庞大的用户数,成为用户…

    2023年5月10日
    36300
  • 不可错过的最新低代码软件排行榜!

    低代码平台正在成为寻求快速有效地构建应用程序的企业的首选解决方案。这些平台减少了编码要求,使企业能够在降低成本的同时更快地完成应用程序开发项目。在本文中,将探索全球受欢迎的低代码平台排行榜。

    2023年9月5日
    39400
  • oa办公系统 哪家强

    开篇直接回应:OA办公系统的优越性取决于其功能全面、易用性、定制性、安全性以及技术支持。市场上几家知名的OA办公系统提供商包括Microsoft Office 365、Google Workspace、阿里巴巴的钉钉和华为的Welink。这些平台各有千秋,但在易用性和集成度方面,微软的Office …

    2024年1月17日
    17500
  • 低代码平台的功能有什么?

    低代码平台是一种软件工具,可以快速、轻松地开发自定义应用程序,而不需要专门的编码知识。低代码平台Zoho Creator用于创建数字应用程序,如Web和移动应用程序、数据分析仪表板和自动化流程管理系统。通过使用低代码平台,企业和组织可以减少设计、开发和部署应用程序所需的时间和工作量。

    2023年7月20日
    32400
  • 什么是面向对象编程思想

    面向过程 (Procedure Oriented) 是一种以过程为中心的编程思想。这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是 封装、继承、类。无论是在软件开发还是在实际工作中,深入地理解软件开发的思想都非常有必要。 面向对象 (Object Or…

    2023年1月16日
    71200
  • 项目质量管理如何压实责任

    项目质量管理是确保项目符合既定标准和要求的关键过程。压实责任需要进行几个核心步骤:首先是明确质量目标、其次是建立质量责任体系、紧接着是执行严格的质量监控、还有就是开展有效的沟通与培训、最后是实行有力的激励与惩罚措施。特别值得注意的是建立质量责任体系,它涉及到对每个项目成员的角色和职责进行明确定义和分…

    2024年4月10日
    5900
  • oa办公系统有什么

    OA办公系统,即在线办公自动化系统,实施日常办公工作流程的电子化、自动化、智能化,提高工作效率并降低成本。核心功能包括:1、文档管理、2、时间和任务管理、3、通信和协作、4、流程审批、5、资源共享。在文档管理方面,系统提供高效的文档处理和存储能力,确保资料的易于检索及安全性。 一、文档管理 在办公自…

    2024年1月11日
    22400
  • 资源匮乏如何管理项目经理

    在资源匮乏的情况下,有效管理项目的关键是:严格优化资源利用、创新项目管理方式、加强沟通和协调、实施灵活性策略。项目经理需要应用多种策略确保项目可以在有限资源下成功推进。例如,严格优化资源利用,意味着需要仔细分析项目的所有资源需求,并识别出哪些是真正必要的。通过使用优先级矩阵来确定资源分配,可以确保最…

    2024年4月10日
    4700
  • 常用的办公软件有哪些

    常用的办公软件有:1、Word;2、Powerpoint;3、Excel;4、Blender;5、WPS;6、Listary;7、Adobe Acrobat;8、XMind。Word给用户提供了用于创建专业而优雅的文档工具,帮助用户节省时间,并得到优雅美观的结果,Word一直都是最流行的文字处理程序…

    2023年3月30日
    3.3K00
  • 项目经理如何管理五大员

    项目管理是一个复杂且多方面的职责,特别是对于项目经理来说,管理好五大员(工程师、材料员、质量员、安全员、劳务员)是确保项目顺利进行的关键。项目经理应当通过科学的组织、明确的沟通、严格的控制、有效的激励、以及专业的培训,来实现对五大员的有效管理。在这五个策略中,科学的组织尤为关键,它为项目的顺利进展打…

    2024年4月11日
    3700

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部