为什么 bufferedReader 在 java 中比 Scanner class 更高效?

Why bufferedReader is much efficient than Scanner class in java?

看看下面的问题,无论您为此编写解决方案的效率如何,使用 Scanner class 都会导致超时。

问题:

你给了一个包含元素的数组。现在,对于给定的查询,您提供了一个整数,您必须找到最小和,即数组中所有元素的总和,其值小于提供给查询的给定整数。

输入格式:

第一行:一个整数,表示数组元素的数量。 第二行:space 分隔的整数,表示数组元素。 第三行:一个整数,表示查询的数量。 对于每个查询:新行包含一个整数

输出格式: 对于每个查询,在新行中打印一个整数,即 Min Sum。

只需使用 Buffered Reader 而不是 Scanner classBuffered Writer 而不是 System.out.print ,就可以使这段代码的速度提高一倍,并且所有测试用例都可以轻松通过,什么是这背后的原因是什么?

BufferedReader 比 Scanner 快得多,因为它具有比 Scanner 更大的缓冲内存。可以看出两者的区别in this discussion.