我了解字节是Java IO的基础数据类型,但是为什么使用字节来读取和写入字节,因为它的最大值范围是-128到127。此范围是整数,如何将整数用于读取和写入不同的符号字符还是二进制数据?
期望是要理解为什么字节数据类型用于Java IO。
答案 0 :(得分:2)
Java是C / C后设计++一些讨论主题:
爪哇文本String
(Reader/Writer
)包含Unicode所以在混合脚本文本可以被组合。内部字符串是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