哪兩個比較好比較String的方法?什麼是比較字符串的更好方法?
String str="Hello";
//case 1:
if(str.equals("Hello")){
//case 2:
if("Hello".equals(str))
哪兩個比較好比較String的方法?什麼是比較字符串的更好方法?
String str="Hello";
//case 1:
if(str.equals("Hello")){
//case 2:
if("Hello".equals(str))
我使用case 2
每當我需要與一個常量字符串比較。
if("Hello".equals(str))
以上避免NullPointerException
。
更新: -
我不認爲有任何性能問題,因爲CPU將是一樣的,順序並不重要。
但是在很少的地方,它會降低可讀性。
(5==num)
在上面,你會讀它爲5 is equal to num
,而不是num is equal to 5
。
是不是有什麼表現問題或者什麼的,我一直對這個問題感到困惑。使用尤達條件是否有缺點? –
@PrashantPrabhakarSingh我不認爲會有任何性能問題。更新了我的答案。 – Mritunjay
第二個選項是更安全,因爲它不會拋出NullPointerException如果str爲null
我會選擇後者。
"Hello".equals(str) //prevents NullPointerExceptions.
您還可以閱讀有關尤達條件!
考慮這種情況:
String str = null;
//case 1:
if(str.equals("Hello")){
//case 2:
if("Hello".equals(str))
在上面的代碼,案例1是要失敗的,但案件2不會。所以後者更好。
但是,如果你正在考慮性能,那麼兩者之間沒有區別。
謝謝。我期待如果有任何性能問題。如果沒有性能問題,毫無疑問,第二種方法更好。 –
考慮'str'是否爲空 –
後者是yoda條件。如果'str'爲空,第一個將失敗,但後者不會。 – Li357
相關:http://stackoverflow.com/q/3418680/5647260和http://stackoverflow.com/q/9888508/5647260 – Li357