上ByteArrayInputStream的文档说:ByteArrayInputStream不复制字节数组?
java.io.ByteArrayInputStream.ByteArrayInputStream(字节[] BUF) 创建一个ByteArrayInputStream以便它使用的buf作为它的缓冲器阵列。缓冲区数组不被复制。 pos的初始值是0,count的初始值是buf的长度。参数 buf输入缓冲区。
当我运行下面的代码,
byte[] b = new byte[10];
ByteArrayInputStream bais = new ByteArrayInputStream(b);
String someText = "Java byte arrayinput stream test - this string will be used.";
b = someText.getBytes();
int c =0;
while((c = bais.read()) != -1){
System.out.print((char)c);
}
我得到的输出是基于10字节空白数组,而不是用于测试串上。这表明ByteArrayInputStream的构造函数必须复制字节数组,而不是存储对传递的字节数组的引用。这与文档相矛盾。任何人都可以澄清我的理解,如果字节数组被复制或没有?(如果它没有被复制,那么为什么输出不反映字节数组b的状态?
看看第4行,你会发现你的论点有什么问题。什么,确切地说,b = someText.getBytes()呢? – Ingo 2011-04-05 12:52:51
我意识到这一点,我只能在阅读完所有答案后才问这个问题,这是多么朴素! – Bhaskar 2011-04-05 13:00:36