首页 > 解决方案 > 控制台/命令窗口上的输出始终为字符串形式/类型?

问题描述

我知道,当我们使用所有语言的打印函数在输出窗口上打印字符串时,它只会打印为字符串。但是我想知道如果我使用相同的打印函数打印一个整数/浮点数,它会被转换成字符串然后打印在输出屏幕上,还是它的类型行为与我们传递给打印函数时的行为相同?
我问这个问题是因为我参加了一些竞争性编程,发现如果我们必须在不同的行上打印从 1 到 500 的整数,并且如果我们运行“for”循环 500 次并在每次迭代中调用 print() 函数/cycle 那么它会花费很多时间。但是,如果我创建一个仅包含一个字符串的变量,并且我在字符串末尾添加一个整数,并在每次迭代/循环中添加一个换行符,并在修剪后最后打印该字符串,那么它会比较耗时更短的时间。下面举个例子---

下面的 Java“for”循环在每个迭代/循环期间打印数字。

for(int i=1;i<=500;i++){
    System.out.println(i);
}

下面的 Java 代码定义了一个字符串变量,然后在循环的每个循环中使用换行符在末尾添加数字。最后通过修剪打印字符串变量,以便删除最后一个换行符。

String buffer_str = "";
for(int i=1;i<=500;i++){
    buffer_str+=i+"\n";
}
System.out.println(buffer_str.trim());

因此,当我在思考两个答案是否相同时,我想到了这个问题。第一个代码块打印整数,而第二个代码块打印一个字符串。

我也用python语言检查了这两个代码,发现第二个代码块太快了,而第一个代码块有点慢。所以第二种方式看起来不错,但它是否合适且防错?

我很感激你的回答。

标签: printing

解决方案


首先,该函数System.out.println通过方法将参数转换为字符串.toString()(参见https://docs.oracle.com/javase/tutorial/essential/io/formatting.html)。

其次,首先将所有输出累积到缓冲区中可能会更快,因为与修改主存储器中的变量相比,这些 I/O 操作相对较慢。至于为什么会这样,请考虑这个线程。使用第二种方法,您只需执行一次该过程。


推荐阅读