2015-07-21 33 views
2

我在Adobe CQ中編寫了很多組件,因此必須處理大量的用戶設置屬性。在我可以執行isEmpty檢查之前,我對所有空檢查感到厭倦。Java isEmpty或「」.equals性能

我想做類似的事情。

"".equals(string); 

這會更具可讀性,但它如何比較性能呢?是的,如果有多重檢查,我希望能夠創建「」作爲常量。

感謝 d

+0

即使它做了一些小小的改進,對於最終用戶來說它甚至是可以通知的嗎? –

回答

1
+4

你真的使用Objects.equals(「」,str)'來檢查字符串是否爲空嗎? –

+0

@TagirValeev有什麼更好的?我一直使用'Objects.equals()',否則比較可能是一個錯誤農場。 –

+0

如果有一個專門的方法('isEmpty()'),爲什麼要使用'equals(Object)',這樣做,你想要什麼? 'isEmpty()'確實更快,更易於閱讀。 – Turing85

0

你不應該在乎的表現在這裏。兩個版本都有類似的速度。即使它們的編譯方式不同,JITted代碼的差異也不會超過幾個CPU週期(特別是考慮到String.equals是JVM固有的事實)。不是在Java上編程時應該擔心的事情。

+0

我認爲String.equals是最容易閱讀的,這對我來說是最大的勝利。如果性能差不多,我會在代碼審查中提出我的觀點。感謝您的意見。 – DamianM

0

優選使用isEmpty()方法(更簡單和更快的源代碼)。 檢查空字符串在java中的另一種有效的方法是使用:

string.length() == 0; 
+1

請將您的回答添加到第一個方法爲什麼是首選。 – JackWhiteIII

1

我個人使用Apache's StringUtils,如:

if (StringUtils.isEmpty(someString)) { 
    ... 

if (StringUtils.isNotEmpty(someString)) { 
    ... 

而且我真的不擔心關於這方面的表現,除非你有基準確定它是一個問題

+1

是的,添加第三方庫來調用單一方法,確實是一個巨大的勝利。和'StringUtils.isEmpty(someString)'看起來比'someString.isEmpty()'好得多...... – Holger

+0

我從來沒有在一個沒有廣泛使用apache.commons.lang3的項目上工作;當然有很多有用的東西 – beresfordt

+0

。如果您在找到與現有JRE方法相同的方法時立即添加該庫,則不會在沒有該方法的情況下擁有任何項目。不要忘記,有用的常量:'StringUtils.EMPTY';不再需要一直輸入'「」'... – Holger