Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-字节流与字符流?_Java_Stream_Char_Byte - Fatal编程技术网

Java-字节流与字符流?

Java-字节流与字符流?,java,stream,char,byte,Java,Stream,Char,Byte,这个标题是不言自明的。在很多JRE Java文档中,我到处都能看到“字节流”和“字符流”这两个短语 但它们不是同一件事吗?或者它们在爪哇岛上略有不同(例如解释不同)?提前感谢。在Java中,字节与字符不是一回事。因此,字节流不同于字符流。字节用于任意二进制数据;字符专门用于表示字符串构建块的数据 但是如果一个字符的宽度只有1字节 除了那不是。 根据achar是一个范围内的数字: 从'\u0000'到'\uffff'包括在内,即从0到65535 但是字节是范围内的数字 从-128到127,包括 他

这个标题是不言自明的。在很多JRE Java文档中,我到处都能看到“字节流”和“字符流”这两个短语


但它们不是同一件事吗?或者它们在爪哇岛上略有不同(例如解释不同)?提前感谢。

在Java中,
字节
字符
不是一回事。因此,字节流不同于字符流。字节用于任意二进制数据;字符专门用于表示字符串构建块的数据

但是如果一个字符的宽度只有1字节

除了那不是。 根据a
char
是一个范围内的数字:

'\u0000'
'\uffff'
包括在内,即从0到65535

但是
字节
是范围内的数字

从-128到127,包括


他们是不同的
char
是Java中的2字节数据类型:
byte
是1字节数据类型


编辑:
char
也是无符号类型,而
byte
不是。

字节流只是普通字节,就像在十六进制编辑器中打开文件时看到的那样

字符不同于普通字节。ASCII编码每个字符只使用1个字节,但对于许多其他编码来说,情况并非如此。例如,可以使用1到4个字节对单个字符进行编码。字符流设计用于抽象出底层编码,并生成一种编码类型的
char
(在Java中,
char
String
使用UTF-16编码)

根据经验:

  • 处理文本时,必须使用字符流将字节解码为具有适当编码的字符

  • 当您处理二进制数据或二进制和文本的混合数据时,必须使用字节流,否则就没有意义。如果一个字节序列以某种编码表示字符串,那么您总是可以从中提取这些字节,并使用构造函数返回字符串


一般来说,最好根据流的大小来讨论流,而不是讨论流所承载的内容。字节流比字符流更直观,因为字符流使我们必须仔细检查字符是否确实是字节,而不是unicode字符,或者任何奇特的字符


char是一种表示,可以用字节表示,但字节始终是字节。当字节不再是8位时,整个世界都会燃烧起来。

谢谢@Matt Ball-我知道就类型而言它们是不同的(
byte
char
,等等),但是如果一个
char
的宽度只有1个字节,那么将输入流存储为字节数组和char数组有什么不同呢?这是我问题的根本。谁说一个
char
的宽度只有一个字节?“当字节不再是8位时,整个世界都会被烧掉。”几乎没有。