String#repeat来到Java吗?
JDK-8197594 (“ String#repeat”)在其“描述”中包括以下內容:“長期以來,一直要求一種用于重復字符序列的String方法,沒有后續操作。” 可以在JDK-8197594的“問題鏈接”中找到有關String類中用于重復字符序列的方法的興趣,這些方法包括JDK-8055862 [“提供字符串重復方法”]和JDK-6984084 [“( str)n次重復java.lang.String的字符構造函數”]。 這兩個鏈接問題都描述了在String類中使用這種方法的動機。 進一步的證據包括在線問題,例如在Java 中重復字符串的 簡單方法 , 如何 在Java 中重復字符串“ n”次? , 在Java中重復字符串的簡單方法是什么? ,以及如何在Java編程中將字符串重復n次?
Guava通過其Strings.repeat(String,int)方法提供了此所需的行為,而Apache Commons Lang通過其StringUtils.repeat(String,int)提供了此功能。 此功能也可能在單個項目中實現了數百次或更多次 。 標準java.lang.String.repeat(String, int)方法的可用性可以替代所有這些方法。
關于JDK-8197594的core-libs-dev JDK郵件列表的討論提供了一些其他有趣的細節,這些細節可能會添加到Java的未來版本中。
Jim Laskey的消息中提到了一個有趣的觀點,他在其中描述了該方法將提供的潛在性能改進。 具體來說,Laskey寫道:“以jmh運行性能……表明這些方法比StringBuilder等效方法要快得多”,Laskey將此歸因于“內存分配減少了”,“字符到字節數組的轉換減少了”以及“金字塔復制與O相比更快( N)復制。” 由于這是開源的,在目前提出的實現是導致這些性能優勢提供 。 對于感興趣的人,上述兩個開放源代碼項目顯然已經提供了其源代碼[ Guava的Strings.repeat(String,int)和Apache Commons Lang的String repeat(String,int) ]。
Brian Goetz發布了在標準API中添加諸如String.repeat的方法的第二個原因:將通過語句實現的通用功能轉換為可組合的表達式。 Goetz解釋說:“我對這類方法的主要動機是,將需要執行的內容作為_statements_(循環,if-then等)并將它們轉換為_expressions_,這主要不是因為它們更緊湊,而是因為它們變得_composible_ 。” Goetz之前已經描述了表達式的優點,這是JEP草案中與Java中的開關表達式相關的主要動機之一。
用java.lang.String上的一種新方法將字符序列重復指定的次數不會像其他許多新的API新增功能和新的語言功能那樣繁重,但是它可以提供一些優點,例如不需要第三次方或自定義實現,改進的性能以及常用實現行為的標準化表示形式。 在撰寫本文時, JDK-8197594未與特定的Java版本關聯,而是標記為“ tbd_feature ”。
翻譯自: https://www.javacodegeeks.com/2018/02/stringrepeat-coming-java.html
總結
以上是生活随笔為你收集整理的String#repeat来到Java吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 湖北省备案平台(湖北备案系统)
- 下一篇: ldap java_使用LDAP保护Ja