需要在控制台中打印一百万个值,与System.out.println()
相比,BufferedOutputStream
相对较慢(来自我读的)。
所以我试着用这种方式打印:
OutputStream out = new BufferedOutputStream (System.out);
out.write(sum);
由于sum
属于int
类型,out.write()
以字节为单位打印。我试图将字节转换为十进制,这给了我一个编译错误说:
字节无法解除引用
所以,我的问题是:使用BufferedOutputStream
以十进制格式打印整数值。
由于我在使用int
打印BufferedOutputStream
值时没有找到任何解决方案,我正在拼命寻找答案。
答案 0 :(得分:3)
您遇到的问题是,在控制台上显示文本比生成它要慢得多。您可以使用缓冲区,如果重定向到文件,而不是屏幕,这将更快,但如果您实际在屏幕上显示它将不会更快。缓冲可以做的是减少滚动量,因为它一次写入文本而不是一行写入屏幕。
注意:BufferedOutputStream写入二进制而不是文本。它会更快,但不是人类可读的。如果你想要人类可读,我建议使用专门用来写文本的PrintWriter。
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(System.out, "UTF-8")));
// call many times
out.print(num);
// to flush the buffer so all the data can be read.
out.flush();
您可以使用StringBuilder,但这是;
答案 1 :(得分:0)
希望这会有所帮助......
byte[] ascii = Integer.toString(sum).getBytes();
OutputStream console = new BufferedOutputStream(System.out);
try {
console.write(ascii);
console.flush();
} catch (IOException e) {
e.printStackTrace();
}
但是你必须检查这段代码是否比
更快System.out.println(sum);
答案 2 :(得分:-2)
使用BigInteger(字节),它将以BigInteger格式获取整数。