Java在printf中的“%n”是怎么回事?

我正在阅读有效的Java,它%n在各处都用于换行符。我已经\n相当成功地在Java程序中使用了换行符。

哪个是“正确”的?这有什么错\n?Java为什么要更改此C约定?


暮色呼如
浏览 2290回答 3
3回答

侃侃无极

“正确”取决于您要尝试执行的操作。\ n将始终为您提供“ unix样式”行结尾。\ r \ n将始终为您提供“ dos样式”行结尾。%n将为您提供所运行平台的行尾C处理此问题的方式有所不同。您可以选择以“文本”或“二进制”模式打开文件。如果您以二进制模式打开文件,\ n将为您提供“ unix样式”行结尾,而“ \ r \ n”将为您提供“ dos样式”行结尾。如果在dos / windows系统上以“文本”模式打开文件,则在编写\ n时,文件处理代码会将其转换为\ r \ n。因此,通过以文本模式打开文件并使用\ n,您可以获得平台特定的行结尾。我可以看到为什么Java的设计者不想复制C关于“文本”和“二进制”文件模式的怪异想法。

白衣染霜花

尽管这\n是基于Unix的系统的正确换行符,但其他系统可能使用不同的字符来表示行尾。特别是Windows系统\r\n和早期MacOS系统\r。通过使用%n格式字符串,您可以告诉Java使用所返回的值System.getProperty("line.separator"),该值是当前系统的行分隔符。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java