一、“回车”(Carriage Return)和“换行”(Line Feed)的来历
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历。
二、计算机里的“回车”与“换行”
public class CRLFTest { public static void main(String[] args) { // 1. 中间包含\n String str = new String("Hello, World! \nThis is new line."); byte[] bytes = str.getBytes(); System.out.println(str); for (int i = 0; i < bytes.length; i++) { System.out.print(bytes[i] + " "); } System.out.println(); // 2. 中间包含\n\r str = new String("Hello, World! \n\rThis is new line."); bytes = str.getBytes(); System.out.println(str); for (int i = 0; i < bytes.length; i++) { System.out.print(bytes[i] + " "); } System.out.println(); // 3. 中间包含\r str = new String("Hello, World! \rThis is new line."); bytes = str.getBytes(); System.out.println(str); for (int i = 0; i < bytes.length; i++) { System.out.print(bytes[i] + " "); } System.out.println(new Date()); } }
Hello, World! This is new line. 72 101 108 108 111 44 32 87 111 114 108 100 33 32 10 84 104 105 115 32 105 115 32 110 101 119 32 108 105 110 101 46 Hello, World! This is new line. 72 101 108 108 111 44 32 87 111 114 108 100 33 32 10 13 84 104 105 115 32 105 115 32 110 101 119 32 108 105 110 101 46 Hello, World! This is new line. 72 101 108 108 111 44 32 87 111 114 108 100 33 32 13 84 104 105 115 32 105 115 32 110 101 119 32 108 105 110 101 46 Wed May 25 11:28:42 CST 2011
Hello, World! This is new line. 72 101 108 108 111 44 32 87 111 114 108 100 33 32 10 84 104 105 115 32 105 115 32 110 101 119 32 108 105 110 101 46 Hello, World! This is new line. 72 101 108 108 111 44 32 87 111 114 108 100 33 32 10 13 84 104 105 115 32 105 115 32 110 101 119 32 108 105 110 101 46 This is new line. 72 101 108 108 111 44 32 87 111 114 108 100 33 32 13 84 104 105 115 32 105 115 32 110 101 119 32 108 105 110 101 46
Hello, World! This is new line. 72 101 108 108 111 44 32 87 111 114 108 100 33 32 10 84 104 105 115 32 105 115 32 110 101 119 32 108 105 110 101 46 Hello, World! This is new line. 72 101 108 108 111 44 32 87 111 114 108 100 33 32 10 13 84 104 105 115 32 105 115 32 110 101 119 32 108 105 110 101 46 Hello, World! This is new line. 72 101 108 108 111 44 32 87 111 114 108 100 33 32 13 84 104 105 115 32 105 115 32 110 101 119 32 108 105 110 101 46