Java -字节流vs.字符流



标题不言自明。在很多JRE javadocs中,我看到到处都是"字节流"one_answers"字符流"这样的短语。

但是它们不是一样的吗?或者它们在java语言中是否略有不同(例如解释不同)?

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

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

除了它不是根据JLS第4.2.1节,a char是一个范围内的数字:

'u0000''uffff',即从0到65535

但是byte是在

范围内的数字

从-128到127,包括

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

Character不同于普通的byte。ASCII编码每个字符正好使用1个字节,但对于许多其他编码来说并非如此。例如,UTF-8编码可以使用1到4个字节来编码单个字符。字符流被设计为抽象掉底层编码,并产生一种编码类型的char(在Java中,charString使用UTF-16编码)。

根据经验:

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

  • 当你处理二进制数据或二进制和文本的混合数据时,你必须使用字节流,否则就没有意义了。

  • 如果一个字节序列以某种编码表示一个String,那么你总是可以挑选出这些字节并使用String(byte[] bytes, Charset charset)构造函数来返回String。

它们是不同的。char是Java中的2字节数据类型,byte是1字节数据类型。

编辑:char也是unsigned类型,而byte不是。

一般来说,最好是从流的大小来讨论流,而不是它们携带的内容。字节流比字符流更直观,因为字符流使我们必须仔细检查字符是否确实是字节,而不是unicode字符,或者其他花哨的东西。

char是一种表示法,它可以用字节表示,但字节总是一个字节。当字节不再是8位时,整个世界将会燃烧。

相关内容

  • 没有找到相关文章

最新更新