在Java中,

“回车”表示为'\r'



“换行”表示为'\n'

但是Java不允许,

“回车”为'\u000d'



“换行”为'\u000a'

为什么?

最佳答案

Unicode转义序列比字符文字转义序列在源转换中更早地应用。 Unicode转义序列在此过程的很早就进行了转换-在发生任何其他词法之前,包括在检测到换行符之前。有关详细信息,请参见JLS 3.2

因此,当您将\u000a放入Java源文件中时,它的行为就像在其中放入实际的换行符一样-就编译器的其余部分而言,导致换行。

(我个人认为这是一个设计错误;我更喜欢C#方法,只允许在代码中非常特定的点使用Unicode转义序列,但这是另一回事。)

09-27 17:11