This question already has answers here:
Difference between \n and \r?
                                
                                    (9个答案)
                                
                        
                                2年前关闭。
            
                    
我指的是this问题,并且理解\ n将光标移至下一行而不重置它,而\ r重置光标而不将其移到下一行。 \ r \ n在Windows中用作换行符。
因此,出于好奇,我将\r\n\n\r与Java中的其他值一起分配给字符串,并在Windows环境中的控制台中将它们打印出来。

System.out.println("ABC\r\nDEF");
System.out.println("ABC\n\rDEF");


输出1:

ABC
DEF


根据我的理解,这里\r只是重置了光标并将其移动到同一行(第1行)的开头,而\n将其前进到了下一行(第2行)。因此DEF用新行打印。

输出2:

ABC

DEF


但是我无法理解输出2。我认为这应该与输出1相同,因为如果\n将光标移到下一行(第2行),然后如果\r将其重置并将其放在开头,同一行(在这种情况下可能是第2行),那么为什么在第2行未打印DEF

编辑:

这是thisthis中未涵盖的其他问题

最佳答案

这与Java无关,与控制台/终端/等无关。将输出转换为显示。

在Windows命令窗口中,规范的“行尾”编码为\r\n。 Windows将其视为单个实体。

尽管这样做的历史原因是电传打印机的回车(将打印头向左移动)和换行符(将纸张前进一行),但就显示而言,在Windows中,\r\n是一件“事情”。

\n\r不能以相同的方式识别为一个“事物”。但是它通过逐行处理每个字符。

10-07 19:51
查看更多