gpt4 book ai didi

java - 为什么java文件IO使用字节数据类型?

转载 作者:行者123 更新时间:2023-11-30 01:56:06 25 4
gpt4 key购买 nike

我知道byte是Java IO的底层数据类型,但是为什么要使用byte来读写,因为它的最大值范围是-128到127。这个范围是整数,整数如何用于读写不同的符号字符还是二进制数据?

期望是理解为什么字节数据类型用于 Java IO。

最佳答案

Java 是在 C/C++ 之后设计的,有一些讨论的主题:

  • Java 文本 String(Reader/Writer)包含 Unicode,因此可以组合混合脚本中的文本。 String 内部是一个 UTF-16 char 数组; .class 文件使用 UTF-8 字符串常量。因此,byte[] (InputStream/OutputStream) 仅适用于二进制数据。在文本和二进制数据之间始终存在使用二进制数据的编码/字符集的转换。

  • 数字基元类型仅存在于有符号版本中。 (除了char,人们可以认为它是非数字。)这个想法是为了根除 C++ 的有符号/无符号“问题”。所以byte也是从-128到127进行签名的。但是溢出在java中也无关紧要,所以人们可以这样做:

    字节 b =(字节)255;//0xFF 或-1

  • 基本类型byte/short/int/long固定的字节大小,其中C是臭名昭著的跨平台,而像C这样的东西uint32 有点难看 (32)。

我自己经历过签名/未签名的棘手 C 错误(>10 年前),我认为这个决定是好的。

以有符号的思维方式进行计算,然后在最后将值视为无符号,比在整个表达式中使用有符号和无符号部分更容易。

现在,java 支持关于值的无符号解释的计算,例如 Integer.parseUnsignedInt .

关于java - 为什么java文件IO使用字节数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54463461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com