优势到某个字符串比较顺序

时间:2014-01-24 18:48:30

标签: programming-languages

看一下互联网上的一些代码,我注意到有些作者倾向于写字符串比较,如

if("String"==$variable)
PHP中的

if("String".equals(variable))

我的偏好是:

if(variable.equals("String"))

我意识到这些实际上是平等的:他们比较两个字符串是否相等。但我很好奇,如果在性能或其他方面对一方有优势。

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

使用相等函数或使用if( constant == variable )而不是if( variable == constant )的方法的一个示例是,它可以防止您意外地拼写和编写赋值而不是比较,例如:

if( s = "test" )

"test"分配给s,这会导致不良行为,这可能会导致难以发现的错误。但是:

if( "test" = s )

在大多数语言中(我都知道)会导致某种形式的警告或编译错误,从而有助于避免以后出现错误。

答案 1 :(得分:1)

使用简单的int示例,可以防止意外写入

if (a=5)

如果写为

,那将是编译错误
if (5=a)

我肯定不知道所有语言,但体面的C编译器警告你if (a=b)。也许你写的问题所用的语言没有这样的特性,所以为了能够在这种情况下产生错误,它们已经恢复了比较参数的顺序。

Yoda conditions将这些称之为。

答案 2 :(得分:1)

语言使用的语法与效率无关。这是关于比较算法如何工作的全部内容。

在你提到的例子中,这个:

if("String".equals(variable))

和此:

if(variable.equals("String"))

将完全相同,因为表达式“String”将被视为String变量。

为字符串提供比较方法的语言将使用最快的方法,因此您不应该关心它,除非您想自己实现该方法;)