文章目錄
- "\r"和"\n"的差別
-
- "\r"和"\n"的由來
- Enter鍵和輸入的"\n"有不同嗎?
- 系統影響
- java使用換行符的幾種方式
“\r"和”\n"的差別
回車 \r 本義是光标重新回到本行開頭,r的英文return,控制字元可以寫成CR,即Carriage Return
換行 \n 本義是光标往下一行(不一定到下一行行首),并不移動左右。n的英文newline,控制字元可以寫成LF,即Line Feed
也就是說,如果想要到下一行行首,一般的寫法應該是"\r\n",0D 0A,即 ASCII 碼對應的 ‘\r’和’\n’
注意:\r,\n的順序是不能夠對換的,否則不能實作換行的效果.
這個順序是固定的,但實際生活中不是這樣,有時輸入"\n"就能達到我們想要的效果,這是為什麼呢?
“\r"和”\n"的由來
原先的機械打字機,打完一行後會有一個自動卷動紙帶的動作,進行換行,大約0.2s,受限于機械,當時可以在這段時間内輸入兩個字元,而在這期間輸入的字就會丢失.
後來人們對其進行了改進,加入了"字車",每次打完一行都要重新撥動上面的"字車",代表,要對下一行首位進行書寫,此時打字機自動回到行首,并且滾動下面的卷紙滾輪換到下一行,模拟兩個字元輸出進行占位
後來研發計算機鍵盤的時候,延續了這個習慣,每次換行也要"\r\n"
但是前期電腦的存儲器很珍貴,有人覺得這兩個字元太浪費記憶體空間,就閹割掉了一個,隻剩"\n",但是還是有系統保留了"\r\n"換行的習慣,是以不同系統間對于換行的定義也不同,比如windows還保留着"\r\n"的定義,而linux是"\n",是以兩個打開對方的檔案就會顯示出現差異

Enter鍵和輸入的"\n"有不同嗎?
Enter鍵在windows代表"\r\n",即代表了兩個字元,比"\n"多"\r";在linux則代表"\n",
出現這種差異在于不同系統對于換行的定義不同
硬回車就是普通鍵盤按回車産生的,它在換行的同時也起着段落分隔的作用。
軟回車是用 Shift + Enter 産生的,它換行,但是并不換段,即前後兩段文字在 Word 中屬于同一“段”。在應用格式時有用
軟回車能使前後兩行的行間距大幅度縮小,因為它不是段落标記,要和法定的段落标記——硬回車差別出來。硬回車的html代碼是
…
,段落的内容就夾在裡面,而軟回車的代碼很精悍:
。網頁的文字如果複制到word中,則硬回車變為彎曲的箭頭,軟回車變為向下的箭頭。
系統影響
換行符會随着系統的不同而不同
windows下的文本檔案換行符:\r\n
linux/unix下的文本檔案換行符:\r
Mac下的文本檔案換行符:\n
是以常見的現象是,Unix/Mac系統下的檔案在Windows裡打開的話,所有文字會變成一行;而Windows裡的檔案在Unix/Mac下打開的話,在每行的結尾可能會多出一個^M符号
如圖,0a在ascII碼中是"\n"的意思,是以如果檔案在linux中打開
是以,java如果在win應用,java應該使用的換行符是"\r\n"
java使用換行符的幾種方式
有以下3種方法:
1.使用java中的轉義符"\r\n":
2.BufferedWriter的newline()方法:
BufferedWriter bw=new BufferedWriter(fos);
bw.write("你好");
bw.newline();
3.使用System.getProperty()方法: ·