【问题标题】:Difference between \n and System.lineSeparator();? [duplicate]\n 和 System.lineSeparator(); 之间的区别? [复制]
【发布时间】:2018-03-17 18:46:48
【问题描述】:

我的教授一直告诉我们她希望我们使用System.lineSeparator(); 创建一个空的新行,她没有说明任何原因,但基本上说它更干净。 有什么区别,我应该以所描述的方式使用它。

System.out.println("[your message]\n")

对比

System.out.println("[your message]");
System.lineSeparator();

【问题讨论】:

  • 行分隔符并不总是\n,例如在 Windows 上是\r\n。但除此之外,System.lineSeparator(); 什么都不做。
  • “我的教授一直告诉我们她希望我们使用 System.lineSeparator()”等等,什么?这是一种可怕的做法。你真的确定她是这个意思吗?使用System.out.println,或者,如果你使用String.format等,使用%n
  • @BlkPengu 你应该像这样使用System.lineSeparator()System.out.println("[your message]" + System.lineSeparator());
  • @AndyTurner 我的意思是调用System.lineSeparator(); 而不使用它的结果没有任何作用
  • @Artem 对,但正确的做法是使用System.out.println();,不带参数,不要使用字符串拼接。

标签: java


【解决方案1】:

\n 字符是单个字符,通常称为“换行符”。有时它可能被称为“换行”更准确。行分隔符因计算机而异,因操作系统而异。在 Windows 和 Unix 上你会得到不同的行分隔符。

如果您运行:System.getProperty("line.separator"),它将返回特定于您的操作系统的行分隔符。在 Windows 上它将返回 \r\n,在 Unix 上它将返回 \n

我希望它对你来说足够清楚。

【讨论】:

  • 这是一个很好的解释。然而,它并没有解决 OP 老师给出的可怕建议
  • @MadPhysicist 这个建议并不可怕。我只是认为OP误解了它。在创建带有换行符的Strings 时,不应使用\n,而是使用与平台无关的解决方案:String text = "hello" + System.lineSeparator() + "test";
  • @Zabuza。可能。事实上大概。尽管如此,我们所拥有的只是 OP 的话。
【解决方案2】:

我的教授一直告诉我们她希望我们使用System.lineSeparator(); 来创建一个空的新行

你确定她这么说吗?因为调用System.lineSeparator(); 什么都不做:它返回一个字符串,该字符串被简单地丢弃。

如果要插入新行(在System.out 中),请使用:

System.out.println();

【讨论】:

  • 我认为老师想说“使用方法的结果”并且OP只是误解了。比如String newline = System.lineSeparator(); 然后String text = "hello" + newline + "test"; 等等。
【解决方案3】:

以下是 API 文档对 System.lineSeparator 的评价:

返回系统相关的行分隔符字符串。它总是返回相同的值——system propertyline.separator 的初始值。

在 UNIX 系统上,它返回 "\n";在 Microsoft Windows 系统上,它返回 "\r\n"

【讨论】:

    猜你喜欢
    • 2011-05-29
    • 2012-11-12
    • 2017-03-04
    • 2014-11-01
    • 2013-07-01
    • 1970-01-01
    • 2019-01-28
    • 2011-01-08
    相关资源
    最近更新 更多