也许有人可以帮助我理解,因为我觉得我错过了一些可能会影响我的程序运行效果的东西。为什么ByteArrayOutputStream使用int?
我正在使用ByteArrayOutputStream。除非我错过了一些巨大的东西,这个类的重点是创建一个byte []数组用于其他用途。
但是,BAOS上的“简单”写入函数不是一个字节的int(ByteArrayOutputStream.write)。
根据这个(Primitive Data Types)页面,在Java中,int是一个32位数据类型,一个字节是一个8位数据类型。
如果我写这篇文章的代码...
int i = 32;
byte b = i;
我得到一个关于需要改变这种可能有损转换警告...
int i = 32;
byte b = (byte)i;
我真的很困惑写( int)...
请注意,这是'OutputStream.write'确定此,不是真的'ByteArrayOutputStream'。 –
Yep ByteArrayOutputStream非常受限于它的父类。 –
使用'byte'数据类型除了'byte []'的形式以外,可以说是一个坏主意。 “短”,恕我直言,也是如此。认为字节和短是必要的邪恶,这只是让你阅读和编写奇怪的二进制数据格式。不要使用字节/短变量,方法参数或返回类型。 (不,你不会以任何实质性的方式节省空间(除非是罕见的情况),而且你的代码实际上可能会变慢。) – Ingo