可能重复:
What is the difference between these (bCondition == NULL) and (NULL==bCondition)?
请参阅以下代码: -
if(myVariable==5)
{
//some logic
}
我的一位朋友说,这不是编写代码的好方法,因为它不符合指导原则,但他没有任何理由。以上代码或意外修改是否有可能出现异常?据他说,更好的方法是
if(5==myVariable)
{
//some logic
}
请让我知道哪种方式更好,为什么???如果你有任何链接,请提供链接。
答案 0 :(得分:10)
写作的唯一理由:
5 == variable
而不是
variable == 5
在前一种情况下,如果您错误地将赋值(单=
)放在适当位置,则会出现编译时错误,因为您试图覆盖常量。
但是,如果你这样做,任何体面的编译器都会给你一个警告:
if (variable = 5)
所以恕我直言,这不值得担心。我总是使用后一种if (var == num)
形式。
然而,在Java中,是 值得使用的常见模式。在测试字符串是否相等时,应该使用:
if ("constant".equals(variable)) { ... }
而不是:
if (variable.equals("constant")) { ... }
因为后者可以触发空指针异常,而前者不能。
答案 1 :(得分:4)
在某些语言(如C,
)中,逆转更为可取if (x = 5) {
...
}
如果您错误输入=
而不是==
,会意外地将x分配给值5。通过反转这两个参数,编译器会正确地反对您重新分配值5。
与C / C ++不同,对于像Java这样的语言,它不是一个问题,因为
if (x = 5) {
...
}
不是有效的声明。不过我仍然遵循上述做法。在Java和C / C ++之间交换时,我不必重新思考。
答案 2 :(得分:2)
两者都是一样的。选择你觉得哪些更具可读性......我会先用
答案 3 :(得分:2)
对于那个特定情况,技术上更安全5 == variable
,因为如果你不小心说5 = variable
,编译器就会抱怨。另一方面,variable = 5
完全合法。
答案 4 :(得分:2)
此惯例旨在防止您在if (myVariable=5)
时意外写if (myVariable==5)
。
答案 5 :(得分:1)
对于==
,您执行此操作的顺序并不重要。
你的朋友提到了“指南” - 也许这是一个商业规则?虽然是一个任意的,半无意义的......
答案 6 :(得分:1)
这无关紧要。我更喜欢第一个,因为它更具可读性。
我希望您知道使用==
对于引用类型并不总是正确的。在这些情况下,您应该更喜欢equals
。那么重要,因为你想避免空指针异常。在这种情况下,最好取消引用不能为null的实例。
答案 7 :(得分:0)
我发现没有这样的指导。 应遵循第一种方法,因为它更具可读性。
答案 8 :(得分:0)
我想如果你知道他们是否等于那就好了。 但如果你想了解字符串,那么我更适合使用'.equals'。
e.g:
object.equals("something");
答案 9 :(得分:0)
我唯一能想到的是避免constant = expression
类型的语法错误,或者避免C ++中的操作符过载。在Java中,这两个表达式在语法上都是有效的,并且选择一个表达式是另一个选择。