-
先说小知识:
回车 r 本义是光标重新回到本行开头,r的英文return,控制字符可以写成CR,即Carriage Return
换行 n 本义是光标往下一行,n的英文newline,控制字符可以写成LF,即Line Feed -
代码案例:
具体例子说明:有个循环,循环10次给buffer加字符串,结果最后只打印了 一行数据。public class demoLogger { public static void main(String[] args) { StringBuffer buffer = new StringBuffer(); int i = 0; while (i < 10){ String msg = "我是第" + i + "行数据,啦啦啦啦啦"; buffer.append(msg).append("r"); i++; } System.out.println(buffer); System.out.println("---------------"); } }
这是因为 r 是将光标重新回到开头,导致继续添加数据,会把之前的数据给删除掉。测试案例:
public class demoLogger { public static void main(String[] args) { System.out.println("acnb"); System.out.println("--------"); System.out.println("arb"); System.out.println("--------"); System.out.println("abn"); System.out.println("--------"); System.out.println("abr"); System.out.println("--------"); // 为什么这个可以打印 a b呢,因为先r把光标重回开头,但是n 直接换行,不会覆盖之前所写内容 System.out.println("arnb"); System.out.println("--------"); System.out.println("anrb"); System.out.println("--------"); // 这里没有打印c 是因为n换行之后,先打印了c,然后r 光标回到开头,b覆盖了c System.out.println("ancrb"); } } -
总结:
- 一般在win下的换行符是使用rn 两个一起使用的,或者单独使用n 也是可以的。
- 在UNIX类系统,换行n就表现为光标下一行并回到行首。
- 在MAC上,r就表现为回到本行开头并往下一行。



