2016-11-28 88 views
-2

哪兩個比較好比較String的方法?什麼是比較字符串的更好方法?

String str="Hello"; 

//case 1: 
if(str.equals("Hello")){ 

//case 2: 
if("Hello".equals(str)) 
+0

考慮'str'是否爲空 –

+0

後者是yoda條件。如果'str'爲空,第一個將失敗,但後者不會。 – Li357

+1

相關:http://stackoverflow.com/q/3418680/5647260和http://stackoverflow.com/q/9888508/5647260 – Li357

回答

3

我使用case 2每當我需要與一個常量字符串比較。

if("Hello".equals(str)) 

以上避免NullPointerException

更新: -

我不認爲有任何性能問題,因爲CPU將是一樣的,順序並不重要。

但是在很少的地方,它會降低可讀性。

(5==num) 

在上面,你會讀它爲5 is equal to num,而不是num is equal to 5

+0

是不是有什麼表現問題或者什麼的,我一直對這個問題感到困惑。使用尤達條件是否有缺點? –

+0

@PrashantPrabhakarSingh我不認爲會有任何性能問題。更新了我的答案。 – Mritunjay

0

第二個選項是更安全,因爲它不會拋出NullPointerException如果str爲null

1

我會選擇後者。

"Hello".equals(str) //prevents NullPointerExceptions. 

您還可以閱讀有關尤達條件!

1

考慮這種情況:

String str = null; 

//case 1: 
if(str.equals("Hello")){ 

//case 2: 
if("Hello".equals(str)) 

在上面的代碼,案例1是要失敗的,但案件2不會。所以後者更好。

但是,如果你正在考慮性能,那麼兩者之間沒有區別。

+0

謝謝。我期待如果有任何性能問題。如果沒有性能問題,毫無疑問,第二種方法更好。 –

相關問題