例如,如果我有以下内容:
String s = "Alexander";
在这种情况下效率更高,检查:
if(s.contains("Alexander"))
return true;
OR
if(s.equals("Alexander"))
return true;
请注意,这只是一个基本的例子,我需要知道的是理解方法的根源。哪个更高效还是更快?
答案 0 :(得分:4)
仅供注释; - )
String string = "Alex";
long now = System.currentTimeMillis();
for (int n = 0; n < 100000000; n++) if (string.contains("Alexander")) ;
System.out.println("Time: " + (System.currentTimeMillis() -now));
now = System.currentTimeMillis();
for (int n = 0; n < 100000000; n++) if (string.equals("Alexander")) ;
System.out.println("Time: " + (System.currentTimeMillis() -now));
结果:
Time: 1720
Time: 756
答案 1 :(得分:3)
这样:
return s.equals("Alexander");
答案 2 :(得分:1)
equals
更快,因为它只需要从两个字符串的开头开始比较字符串,而contains
必须循环s
以检查"Alexander"
是否开始,在s
内的任何地方结束。
但忽略了......
if (s.equals("Alexander"))
会更有效率,因为否则你必须这样做
if (s.contains("Alexander") && "Alexander".contains(s))
保证平等。
答案 3 :(得分:1)
等于效率更高,只检查字符串是否匹配。 包含将在字符串中搜索该文本。
答案 4 :(得分:1)
如果查看java String.java的代码,您可以意识到Equals
比Contains
更有效,因为第一个检查字符串的大小然后比较一个每个角色一个。另一方面,Contains
调用方法indexOf
,该方法搜索字符串之间的特定重合。
两种方法的目的完全不同。您应该使用equals
来测试字符串之间的相等性。
答案 5 :(得分:1)
他们有两种不同的方法,所以我不确定比较它们会非常现实。但是,正如已经指出的那样,contains()
执行实际搜索字符串作为目标值的额外步骤,而equals()
只检查两个字符串是否相同。