[英]Performance in string comparison
我正在检查代码的性能,我在java字符串值比较中有"".equals(string)
,但是我得到了string.trim().length() == 0
提供更好的性能。 是真的吗 我对此表示怀疑,因为即使字符串为null, "".equals(string)
也会注意,但第二件事是首先需要进行null检查,然后才可以修剪字符串。
使用哪种更好: if("".equals(string))
或if(string.trim().length() == 0)
。
string.trim().length() == 0
与"".equals(string)
。 比较它们的性能没有意义,因为它们有不同的用途。 (但是,出于推测的目的, string.trim().length() == 0
通常会更慢,因为trim
涉及数组副本。)
string.trim().length() == 0
表示“字符串可能不为空,而仅包含空格”。 "".equals(string)
表示“ string仅为空或null”。 例如, "".equals(" ")
计算结果为false,而" ".trim().length() == 0
计算结果为true。
现在,表达式"".equals(string)
和string != null && string.length() == 0
的结果相同。 string != null && string.length() == 0
技术上讲会更快,但实际上并不重要。 差异将很小,只有几纳秒。 这是因为"".equals(string)
仅能比较长度。
同样,总的来说,这不是要优化的事情。
这两种方法是不同的
方法1:
if("".equals(string))
-比较您的字符串,如果两个字符串的内容相同,则返回true。 参考java文档
布尔值equals(Object anObject)
将此字符串与指定对象进行比较。
和
方法2:
if(string.trim().length() == 0)
-比较字符串的长度,如果两个字符串的长度相同,则返回true。
要处理null prointer异常,您必须首先在第二种方法中检查string是否为null,然后在string对象上调用trim()
方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.