Java-字节流与字符流?
这个标题是不言自明的。在很多JRE Java文档中,我到处都能看到“字节流”和“字符流”这两个短语Java-字节流与字符流?,java,stream,char,byte,Java,Stream,Char,Byte,这个标题是不言自明的。在很多JRE Java文档中,我到处都能看到“字节流”和“字符流”这两个短语 但它们不是同一件事吗?或者它们在爪哇岛上略有不同(例如解释不同)?提前感谢。在Java中,字节与字符不是一回事。因此,字节流不同于字符流。字节用于任意二进制数据;字符专门用于表示字符串构建块的数据 但是如果一个字符的宽度只有1字节 除了那不是。 根据achar是一个范围内的数字: 从'\u0000'到'\uffff'包括在内,即从0到65535 但是字节是范围内的数字 从-128到127,包括 他
但它们不是同一件事吗?或者它们在爪哇岛上略有不同(例如解释不同)?提前感谢。在Java中,
字节
与字符
不是一回事。因此,字节流不同于字符流。字节用于任意二进制数据;字符专门用于表示字符串构建块的数据
但是如果一个字符的宽度只有1字节
除了那不是。
根据achar
是一个范围内的数字:
从'\u0000'
到'\uffff'
包括在内,即从0到65535
但是字节
是范围内的数字
从-128到127,包括
他们是不同的
char
是Java中的2字节数据类型:byte
是1字节数据类型
编辑:
char
也是无符号类型,而byte
不是。字节流只是普通字节,就像在十六进制编辑器中打开文件时看到的那样
字符不同于普通字节。ASCII编码每个字符只使用1个字节,但对于许多其他编码来说,情况并非如此。例如,可以使用1到4个字节对单个字符进行编码。字符流设计用于抽象出底层编码,并生成一种编码类型的char
(在Java中,char
和String
使用UTF-16编码)
根据经验:
- 处理文本时,必须使用字符流将字节解码为具有适当编码的字符
- 当您处理二进制数据或二进制和文本的混合数据时,必须使用字节流,否则就没有意义。如果一个字节序列以某种编码表示字符串,那么您总是可以从中提取这些字节,并使用构造函数返回字符串
char是一种表示,可以用字节表示,但字节始终是字节。当字节不再是8位时,整个世界都会燃烧起来。谢谢@Matt Ball-我知道就类型而言它们是不同的(
byte
,char
,等等),但是如果一个char
的宽度只有1个字节,那么将输入流存储为字节数组和char数组有什么不同呢?这是我问题的根本。谁说一个char
的宽度只有一个字节?“当字节不再是8位时,整个世界都会被烧掉。”几乎没有。