1. 程式人生 > >從java、windows、linux中分析\r和\n

從java、windows、linux中分析\r和\n

先給出\r、\n的ASCII值


windows中\r\n表示換行:

新建一個txt檔案,輸入A換行B,然後檢視txt的十六進位制,參照上圖0D 0A即回車換行(\r\n)結果如下:

linux中\n表示換行:

同樣在linux新建一個txt檔案,輸入A換行B,然後檢視txt的十六進位制,只有0A 即換行(\n)結果如下:
下面是用記事板開啟,可以看到沒有換行

疑問1:為什麼有些檔案只有\n為什麼也能看到有換行效果 因為有些編輯工具做過特殊處理,遇到只有\n的情況也視為換行 可以看到把上面在linux建立的檔案在記事本開啟後,奇蹟發生了,沒有換行。但是換個編輯器檢視,奇蹟又發生了,又可以看到換行了。 有時候把linux下的log日誌拿到windows下用記事本開啟沒有換行,用其它工具開啟看到有換行就是這個原因

JAVA中,對於換行可以參考API,如下圖


實際上,在java中經常用\n就表示換行了,為什麼不用\r\n呢,因為用\n就可以達到換行效果還節省位元組。但是用\r\n 也沒錯的。

但是有些人說只用\r也能達到換行效果就是誤人子弟了,請測試

System.out.println("diu le you mu you\r!!!\r");
System.out.println("rnrn\r\nrnrn");
System.out.println("nn\nnn");

在Eclipse中確實看到換行效果了,請注意這是eclipse做的優化罷了,就想上面說的編輯工具一樣

這是直接在cmd命令下執行結果


這是在IDEA執行的結果,錯的更多了