這句話等於myString != null
,myString.length() > 0
和! myString.equals("")
?這是最高效的嗎? (Java 1.4)Java語言中的高效字符串
0
A
回答
8
這些不是全部等效 - 空引用與空字符串不同。
空測試可能是最有效的,因爲所有其他人至少需要首先找出引用是否爲空。
的,找出最好的辦法就是來衡量性能:
public static void main(String[] args)
{
String myString = "foo";
int a = 0;
for (int i = 0; i < 100000000; ++i)
{
//if (myString != null)
//if (myString.length() > 0)
if (!myString.equals(""))
{
a++;
}
}
System.out.println(a);
}
結果:
myString != null : 0.61s myString.length() > 0 : 0.67s !myString.equals("") : 2.82s
所以空測試和長度測試採取幾乎相同的時間量,但使用空字符串進行相等性測試的時間要長四倍以上。請注意,我測試了比您使用的Java稍微更新的版本,所以您應該自己運行測試以查看您是否得到相同的結果。
1
它們不等價。如果myString爲空,則第二個將拋出NullPointerException。 (myString. = null & & myString.length()!= 0)可能比(「」.equals(myString))稍微更有效率。但是他們仍然會對myString爲空作出不同的反應。
相關問題
- 1. java語言中的更大字符串
- 2. 無效字符選擇字符串(適用於德國語言)
- 3. 語言字符串ADT
- 4. 語言字符串解析
- 5. 哪種語言可以提高字符串模式匹配的效率?
- 6. ML語言中的cdr字符串
- 7. 純功能語言中的高效堆
- 8. 從字符串中提取不同語言的子字符串
- 9. 解析js html庫中的字符串(語言字符串)
- 10. 確定Java中的unicode字符串的語言
- 11. 高效清理表中的字符串
- 12. DynamoDb中的高效字符串搜索
- 13. 在Java中排序多語言環境字符串
- 14. 用C語言中的另一個字符串替換字符串字符
- 15. 從JAVA文件中高效刪除字符串
- 16. 特定語言的字符串類
- 17. C# - 多語言字符串的「取消」
- 18. 查找字符串的語言,C#
- 19. Java讀取來自不同語言的字符串的文件
- 20. 查找字符串C語言中的字符
- 21. 刪除字符串中的最後一個字符Livecode語言
- 22. 字符/語言
- 23. 高效的字符串比較
- 24. 高效的字符串連接
- 25. 高效的字符串結束替換
- 26. 用java語言編寫的字符串數組邏輯問題
- 27. 高效地比較字符串中的連續字符
- 28. 高效VB逃逸字符像C#中的'字符串'
- 29. Java字符串的字符編碼 - 對於法國 - 荷蘭的語言環境
- 30. java中字符串的語法匹配
沒關係。轉移到重要的事情上。 – JohnFx 2010-07-30 22:58:08
@JohnFx:重要的東西,比如生命的意義?無論如何,**的重要性在於,與問題中所述不同,這些**並不等於所有**。 – NoozNooz42 2010-07-30 23:07:17