我在Adobe CQ中編寫了很多組件,因此必須處理大量的用戶設置屬性。在我可以執行isEmpty檢查之前,我對所有空檢查感到厭倦。Java isEmpty或「」.equals性能
我想做類似的事情。
"".equals(string);
這會更具可讀性,但它如何比較性能呢?是的,如果有多重檢查,我希望能夠創建「」作爲常量。
感謝 d
我在Adobe CQ中編寫了很多組件,因此必須處理大量的用戶設置屬性。在我可以執行isEmpty檢查之前,我對所有空檢查感到厭倦。Java isEmpty或「」.equals性能
我想做類似的事情。
"".equals(string);
這會更具可讀性,但它如何比較性能呢?是的,如果有多重檢查,我希望能夠創建「」作爲常量。
感謝 d
使用Objects.equals()
。它完美地解決了你的問題。
你真的使用Objects.equals(「」,str)'來檢查字符串是否爲空嗎? –
@TagirValeev有什麼更好的?我一直使用'Objects.equals()',否則比較可能是一個錯誤農場。 –
如果有一個專門的方法('isEmpty()'),爲什麼要使用'equals(Object)',這樣做,你想要什麼? 'isEmpty()'確實更快,更易於閱讀。 – Turing85
你不應該在乎的表現在這裏。兩個版本都有類似的速度。即使它們的編譯方式不同,JITted代碼的差異也不會超過幾個CPU週期(特別是考慮到String.equals
是JVM固有的事實)。不是在Java上編程時應該擔心的事情。
我認爲String.equals是最容易閱讀的,這對我來說是最大的勝利。如果性能差不多,我會在代碼審查中提出我的觀點。感謝您的意見。 – DamianM
優選使用isEmpty()
方法(更簡單和更快的源代碼)。 檢查空字符串在java中的另一種有效的方法是使用:
string.length() == 0;
請將您的回答添加到第一個方法爲什麼是首選。 – JackWhiteIII
我個人使用Apache's StringUtils,如:
if (StringUtils.isEmpty(someString)) {
...
或
if (StringUtils.isNotEmpty(someString)) {
...
而且我真的不擔心關於這方面的表現,除非你有基準確定它是一個問題
是的,添加第三方庫來調用單一方法,確實是一個巨大的勝利。和'StringUtils.isEmpty(someString)'看起來比'someString.isEmpty()'好得多...... – Holger
我從來沒有在一個沒有廣泛使用apache.commons.lang3的項目上工作;當然有很多有用的東西 – beresfordt
。如果您在找到與現有JRE方法相同的方法時立即添加該庫,則不會在沒有該方法的情況下擁有任何項目。不要忘記,有用的常量:'StringUtils.EMPTY';不再需要一直輸入'「」'... – Holger
即使它做了一些小小的改進,對於最終用戶來說它甚至是可以通知的嗎? –