看一下互联网上的一些代码,我注意到有些作者倾向于写字符串比较,如
if("String"==$variable)
PHP中的或
if("String".equals(variable))
我的偏好是:
if(variable.equals("String"))
我意识到这些实际上是平等的:他们比较两个字符串是否相等。但我很好奇,如果在性能或其他方面对一方有优势。
感谢您的帮助!
答案 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变量。
为字符串提供比较方法的语言将使用最快的方法,因此您不应该关心它,除非您想自己实现该方法;)