Java - "\n" 是什么意思?

17

我在Java中创建了一个二维数组,想要找到一种方法在控制台上打印出它,以便确认我所做的东西是正确的。我在网上找到了一些代码来完成这个任务,但我对其中一部分代码的含义有疑问。

int n = 10;
int[][] Grid = new int[n][n];

//some code dealing with populating Grid

void PrintGrid() {
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            System.out.print(Grid[i][j] + " ");
        }
        System.out.print("\n");
    }
}

"\n"是什么意思?我在谷歌上搜索了一下,但由于它只是一小段代码,所以没有找到太多信息。


虽然我应该说这类问题在StackOverflow上并没有带来太多价值,但我们总能在一个地方找到所有简单的问题。 - Casper Ngo
1
你尝试过删除这行代码(将其注释掉)并查看输出结果的差异吗? - Michaël Benjamin Saerens
1
我不明白为什么这种问题会得到太多的答案。我的意思是,如果只有一个人回答,那就太简单了。现在已经有八个答案了,还在继续增加... - dic19
是的...我搞砸了。我在谷歌上搜索了“/n”而不是“\n”。无论如何,还是感谢你们的回复。 - dock_side_tough
@RohitJain - 问题在于,如果他只是在谷歌上搜索 "\n",那么在前50个结果中只会得到一个相关答案,而且很容易被忽略。如果你加上 "Java" 的话,胜算会更大。 - Hot Licks
7个回答

44

这是一行新的内容

Escape Sequences
Escape Sequence Description
\t  Insert a tab in the text at this point.
\b  Insert a backspace in the text at this point.
\n  Insert a newline in the text at this point.
\r  Insert a carriage return in the text at this point.
\f  Insert a formfeed in the text at this point.
\'  Insert a single quote character in the text at this point.
\"  Insert a double quote character in the text at this point.
\\  Insert a backslash character in the text at this point.

来自 Java 语言规范。

http://docs.oracle.com/javase/tutorial/java/data/characters.html

该网站是关于 Java 字符的教程。

EscapeSequence:
\ b (backspace BS, Unicode \u0008)
\ t (horizontal tab HT, Unicode \u0009)
\ n (linefeed LF, Unicode \u000a)
\ f (form feed FF, Unicode \u000c)
\ r (carriage return CR, Unicode \u000d)
\ " (double quote ", Unicode \u0022)
\ ' (single quote ', Unicode \u0027)
\ \ (backslash \, Unicode \u005c)

https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.6


2
请注意,在Java中,这些转义序列在由“双引号”包围的文字字符串和由'单引号'包围的单个字符文字中都是有效的。也就是说,'\n'是一个字符(数值为0x0A),即使您将其键入为两个字符。 - Hot Licks
我想知道在Linux shell中,为什么\n\\n都会产生一个新行,而\\\n则会显示\n本身?shell是如何处理这个问题的,背后发生了什么? - Mohammed Noureldin
@MohammedNoureldin,\n 应该是反斜杠加 n,而 \\n 应该是反斜杠加换行符。 - Peter Lawrey
1
有没有关于\n是什么的文档?“在此处插入文本中的换行符”是哪个Unicode字符?U+000D吗?不是,那是回车符。U+000A呢?也不是,那是换行符。它会插入U+000D?U+000A?U+000D+U+000A?U+0085?U+2028?U+2029?这是取决于你正在运行的JRE的实现细节吗?它是否会因为你是在Windows、Mac还是Unix上运行而改变? - Ian Boyd
@IanBoyd 这是一个换行符,但我找不到任何官方文件来证明这一点。https://dev59.com/Umox5IYBdhLWcg3wWjHQ - Peter Lawrey
1
@IanBoyd 实际上有这个。https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.6 - Peter Lawrey

8
\n 

这意味着在文本中插入一个换行符。
仅为例子。
System.out.println("hello\nworld");

输出:

hello
world

5
\n

这意味着会打印出一个新行。

顺带一提,没有必要写那个额外的行。有一个内置函数可以实现这个功能。

 println()  //prints the content in new line

Learn more from docs


1
我不这么认为。我发现void println("...")比起void print("..." + "\n")要慢得多,原因不明。这意味着如果你需要大量输出,它会严重拖慢你的项目。 - 000000000000000000000
抱歉 - 我还没有完成评论,不小心就发布了。 - 000000000000000000000
在理想情况下,我会在生产代码中删除所有的 system.out.println 语句。 - Suresh Atta

5

(根据http://java.sun.com/...ex/Pattern.html)

反斜杠字符('\')用于引入转义构造,如上表中定义的那样,并引用其他本来被解释为未转义构造的字符。因此,表达式\\匹配单个反斜杠和{匹配左括号。

其他使用示例:

\\ The backslash character<br>
\t The tab character ('\u0009')<br>
\n The newline (line feed) character ('\u000A')<br>
\r The carriage-return character ('\u000D')<br>
\f The form-feed character ('\u000C')<br>
\a The alert (bell) character ('\u0007')<br>
\e The escape character ('\u001B')<br>
\cx The control character corresponding to x <br>

1

\n是一个字符串转义字符,它会被替换为新行对象。在打印字符串时写入\n将会打印出一个新行,而不是\n本身。

Java 转义字符


1
在原问题的代码示例中,特定情况下的

System.out.print("\n");

有没有办法在增加 i 的过程中换行?
第一个打印语句打印 Grid [0] [j] 的所有元素。当内部的 for 循环完成时,会打印 "\n",然后在下一行打印 Grid [1] [j] 的所有元素,这样重复进行,直到你获得一个 10x10 的网格,其中包含 2 维数组 Grid 的元素。

0

\n 表示换行。

请注意 Java 中的方法: System.out.println("在这里写文本");

注意区别:

代码:

System.out.println("Text 1");
System.out.println("Text 2");

输出:

Text 1
Text 2

代码:

System.out.print("Text 1");
System.out.print("Text 2");

输出:

Text 1Text 2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接