【发布时间】:2014-07-12 09:44:51
【问题描述】:
我只是在玩 Java ByteBuffers,不明白为什么输出不正确。
import java.nio.ByteBuffer;
public class TestBuffers {
public static void main(String[] args) {
ByteBuffer byteBuffer = ByteBuffer.allocate(100);
byteBuffer.put((byte)'H').put((byte)'e').put((byte)'l').put((byte)'l');
System.out.println(byteBuffer.asCharBuffer().toString()); // should print "Hell"
}
}
上面的程序应该打印“Hell”,但它没有。但是如果我在put() 调用中从 1 开始给出位置,那么它可以工作,为什么?
【问题讨论】:
-
它不打印任何东西...如果我这样做
byteBuffer.flip()然后它会打印一些垃圾值。 -
你能发布你的实际代码示例吗?这显然不能编译。
-
一定是
import问题。让我添加java.nio.ByteBuffer导入.. -
您的
buf变量更改了名称,而您缺少()- 没问题,请查看stackoverflow.com/questions/17912640/… 并在缓冲区中执行flip()。 -
已更正..谢谢。我在这个窗口中输入了代码,所以习惯于输入 IDE :(