繁体   English   中英

字符串比较性能

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM