为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

暮色呼如 2019-11-13 15:22:58
我正在阅读有效的Java,它%n在各处都用于换行符。我已经\n相当成功地在Java程序中使用了换行符。哪个是“正确”的?这有什么错\n?Java为什么要更改此C约定?
查看完整描述

3 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

“正确”取决于您要尝试执行的操作。


\ n将始终为您提供“ unix样式”行结尾。\ r \ n将始终为您提供“ dos样式”行结尾。%n将为您提供所运行平台的行尾


C处理此问题的方式有所不同。您可以选择以“文本”或“二进制”模式打开文件。如果您以二进制模式打开文件,\ n将为您提供“ unix样式”行结尾,而“ \ r \ n”将为您提供“ dos样式”行结尾。如果在dos / windows系统上以“文本”模式打开文件,则在编写\ n时,文件处理代码会将其转换为\ r \ n。因此,通过以文本模式打开文件并使用\ n,您可以获得平台特定的行结尾。


我可以看到为什么Java的设计者不想复制C关于“文本”和“二进制”文件模式的怪异想法。


查看完整回答
反对 回复 2019-11-13
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

尽管这\n是基于Unix的系统的正确换行符,但其他系统可能使用不同的字符来表示行尾。特别是Windows系统\r\n和早期MacOS系统\r。


通过使用%n格式字符串,您可以告诉Java使用所返回的值System.getProperty("line.separator"),该值是当前系统的行分隔符。


查看完整回答
反对 回复 2019-11-13
  • 3 回答
  • 0 关注
  • 2289 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信