Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java \r\n vs\n\r他们的行为有什么不同?_Java_String_Newline_Carriage Return_Linefeed - Fatal编程技术网

Java \r\n vs\n\r他们的行为有什么不同?

Java \r\n vs\n\r他们的行为有什么不同?,java,string,newline,carriage-return,linefeed,Java,String,Newline,Carriage Return,Linefeed,我指的是问题,并理解\n将光标移动到下一行而不重置它,而\r将光标重置但不将其移动到下一行。和\r\n在Windows中用作新行字符。 出于好奇,我将\r\n和\n\r与Java中的其他值一起分配给字符串,并在Windows环境的控制台中打印它们 System.out.println("ABC\r\nDEF"); System.out.println("ABC\n\rDEF"); 产出1: 根据我的理解,这里的\r只是重置了光标并将其移动到同一行(第1行)的开头,而\n将光标移动到下一行(第2

我指的是问题,并理解\n将光标移动到下一行而不重置它,而\r将光标重置但不将其移动到下一行。和\r\n在Windows中用作新行字符。 出于好奇,我将
\r\n
\n\r
与Java中的其他值一起分配给字符串,并在Windows环境的控制台中打印它们

System.out.println("ABC\r\nDEF");
System.out.println("ABC\n\rDEF");
产出1: 根据我的理解,这里的
\r
只是重置了光标并将其移动到同一行(第1行)的开头,而
\n
将光标移动到下一行(第2行)。因此,
DEF
以新行打印

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

编辑:
这是一个附加问题,未在或中讨论。区别在于
\n\r
不存在,但
\r\n
存在。原因是,早在当时,像ASR-33这样有一个“车厢”的硬件可能会在车厢返回之前与线路馈送重叠。使用
\n\r
效率极低,因此没有人这样做


所以不要这样做。

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

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

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


\n\r
不能以相同的方式识别为一个“东西”。但它通过逐行前进来处理每个字符。

@Obenland这里没有询问或回答这个额外的问题。@Obenland您的链接只提到Windows支持
\r\n
。但是Windows也只支持
\n
\r
。因此我得到了这个问题,但在你提到的链接或XtremeBaumer提到的链接中没有回答。有趣。因此,ASR-33会在纸架返回时推进纸架,如果它在该操作期间收到
LF
,但如果它在该操作期间收到
CR
,它不会在纸架前进之前返回纸架。这就是我所说的。还有许多移动头点阵打印机。谢谢-刚刚澄清了“重叠”的含义。哦,谢谢@EJP和slim。现在我明白了,学到了一些新东西。@slim这还意味着什么?谢谢@slim的回答。但是如果
\n\r
作为两个独立的东西处理,并且我也尝试单独传递
\n
\r
,并且它们都能够在新行上打印字符。那么,我们是否习惯于一起传递
\r\n
只是为了遵循预设的标准,或者我们是否也可以单独使用
\n
\r
中的一种?这被认为是一种不好的做法吗?
ABC
DEF
ABC

DEF