lineseparator_首选System.lineSeparator()以用Java编写系统相关的行分隔符字符串
lineseparator
JDK 7在java.lang.System類上引入了一個名為lineSeparator()的新方法。 該方法不期待任何參數,并返回一個String ,它表示“取決于系統的行分隔符字符串。” 此方法的Javadoc文檔還指出System.lineSeparator() “始終返回相同的值– 系統屬性 line.separator的初始值。” 它進一步說明:“在UNIX系統上,它返回“ \n ”; 在Microsoft Windows系統上,它返回“ \r\n ”。
既然Java開發人員長期以來一直能夠使用System.getProperty(“ line.separator”)來獲取此與系統相關的行分隔符值,那么為什么那個Java開發人員現在更喜歡使用System.lineSeparator ? JDK-8198645 [“使用System.lineSeparator()代替getProperty(“ line.separator”)”]提供了一些在其“說明”中偏愛System.lineSeparator()而不是System.getProperty(String)方法的原因:
基本模塊中的許多類都使用System.getProperty(“ line.separator”),并且可以使用效率更高的System.lineSeparator()簡化代碼并提高性能。
正如JDK-8198645中的“描述”所述,與System.getProperty("line.separator")相比,使用System.lineSeparator()更簡單,更高效。 core-libs-dev郵件列表上的最近一條消息提供了更多詳細信息,Roger Riggs在該消息中寫道System.lineSeparator() “使用System中的行分隔符,而不是每次都在屬性中查找它。”
在許多情況下,與使用System.getProperty("line.separator") ,使用System.lineSeparator()的性能優勢可能并不那么重要。 但是,鑒于其簡單性,在編寫更簡單的代碼時沒有理由不獲得性能上的好處(即使在許多情況下很難測量)。 System.getProperty(String)方法的缺點之一是必須確保將完全匹配的屬性名稱提供給該方法。 使用基于String的API時,總是存在將字符串拼寫錯誤的風險(我見過“ sep a rator”多次拼寫為“ sep e rator”),使用了錯誤的大小寫,或者意外地引入了其他拼寫錯誤,從而阻止了精確匹配被制造。
在JDK 7中引入了此功能的JDK問題JDK-6900043 (“返回line.separator屬性的添加方法”)在其“說明”中也闡明了一些好處:“查詢line.separator值在大型系統。 正確執行此操作很冗長,并可能導致安全性失敗; 讓方法返回該值將是有益的。” 重復的JDK-6264243 (“ File.lineSeparator()以檢索常用的'line.separator'系統屬性的值”)詳細說明了此方法的優點,并列出了“正確性”,“性能”和“易用性”。使用和跨平臺開發”作為高級優勢。 另一個重復的問題, JDK-6529790 (“請將LINE_SEPARATOR常量添加到System或其他類中”)指出,應該以某種方式將“常量”添加到“某些標準Java類(如String或System)中”與File.pathSeparator為文件分隔符提供的內容相似 。
與JDK 7 System.lineSeparator()引入相關的消息之一使用以下描述來證明其補充:
許多類都需要使用System.getProperty("line.separator") 。 許多做法不正確,因為每當讀取系統屬性時都需要使用doPrivileged塊。 但這并不是什么秘密-即使您對安全管理器不信任,也可以區分行分隔符。
與在JDK 7中添加System.lineSeparator()有關的一個有趣的旁注是,當時的Javadoc并未表明該方法是JDK 7的新功能。JDK-7082231 (“在System.lineSeparator上輸入@since 1.7) ”)在JDK 8中解決了此問題,另外兩個JDK問題( JDK-8011796和JDK-7094275 )則表明,這是多個Java開發人員所希望的。
System.lineSeparator()的引入是一個很小的增強,但是它確實提高了相對常用的API的安全性和可讀性,同時并沒有降低(實際上是在提高)性能。
翻譯自: https://www.javacodegeeks.com/2018/02/prefer-system-lineseparator-writing-system-dependent-line-separator-strings-java.html
lineseparator
總結
以上是生活随笔為你收集整理的lineseparator_首选System.lineSeparator()以用Java编写系统相关的行分隔符字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DDOS源码(ddos源码数据怎么设置)
- 下一篇: apache kafka_2018年机器