gpt4 book ai didi

java - 为什么多次调用 System.out.println 会在单行中打印值

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:45:17 24 4
gpt4 key购买 nike

这只是一个有趣的问题。不是真正的生产代码。我不想修理它。我只想了解这种奇怪的行为。我有应该在每一行中打印“1”的代码。实际上,这是错误的。我在一行中得到了奇怪的结果,如“11111111”。

class Scratch
{
public static void main( String[] args )
{
method();
}

static void method()
{
try
{
System.out.println(1);
method();
}
catch ( StackOverflowError e )
{
method();
}
}
}

输出可能如下:

1
11111
1
11111
1
1
1
1
1
11111111
1
11111

最佳答案

同时,正如@khelwood 在 a comment 中所说的那样,您不应该对忽略重复的 StackOverflowError 的程序有任何特定的期望。任何事情都可能出错。

但是,尝试一个不太可能的解释:System.out.println(1) 包括打印 1 和特定于平台的换行序列 —在 Windows 上同样由打印 \r\n 组成。没有什么可以阻止堆栈溢出发生在两者之间,或者在 1 成功打印后尝试打印换行符时。在这些情况下,下一个 1(如果成功)将打印在同一行上。

您的输出似乎显示了大约 30 个 1 和大约 12 个(完整的)换行符。所以很明显,我勾画的情景发生了一半多一点。 如果这是正确的解释,我们不知道。

关于java - 为什么多次调用 System.out.println 会在单行中打印值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55165707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com