You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下 、 、 区别及System.out.println输出异常咨询

嘿,这个问题问得实在是接地气!我来给你把Windows系统里\r、\n还有\r\n这三个转义字符的区别讲明白,顺便解释下你为啥运行System.out.println("Hello \rWorld")后只看到了World。

首先说你遇到的情况:你代码里的\r是回车符(Carriage Return,简称CR),在Windows控制台里,它的作用就是把光标直接拉回当前行的最开头位置。所以程序先输出Hello,接着碰到\r,光标瞬间回到行首,然后输出World——这就直接把前面的Hello给覆盖掉了,最后你看到的自然就只剩World啦。

接下来咱们逐个拆解这三个家伙:

\r、\n、\r\n的核心区别
  • \r(回车符):最早是从老式打字机来的——打字头打完一行后,要拉回到行的最左端。放到Windows控制台里,它只负责移动光标,不会触发换行操作。除了你遇到的覆盖情况,如果单独输出\r,你会发现光标跳回行首,但内容不会变。
  • \n(换行符,Line Feed,简称LF):同样源于打字机操作——把纸往下挪一行,但打字头还停留在原来的位置。在Windows里,单独用\n大部分时候也能实现换行,但有些场景下可能会出现光标位置错乱(比如在一些老旧终端里);不过像Java这类跨平台语言,System.out.println()方法已经帮你适配了系统,在Windows下它实际输出的是\r\n。
  • \r\n(回车+换行):这是Windows系统的标准换行方式,相当于把上面两个操作合在一起——先让光标回到行首,再换行到下一行。比如你在Windows记事本里敲回车,实际写入文件的就是\r\n,这样新内容会规规矩矩出现在下一行的开头,符合我们日常看文本的逻辑。

顺便提一嘴,不同操作系统的换行规范不一样:Unix/Linux和现代macOS用的是\n,早期的Mac系统用的是\r,但这些都是额外知识点,你重点记住Windows的\r\n标准就行。

内容的提问来源于stack exchange,提问作者Sahisnu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 16:02:32